当前位置: 首页 > 面试题库 >

创建触发器以将数据添加到审核表

劳和雅
2023-03-14
问题内容

假设我们已经50 tables在数据库中,并且想要捕获跨每个表的列的所有更改(列的先前值和新值)。审核表将在此处,其中包含以下列:

IDServer_NameUser_NameDate_TimeTable_NameColumn_NameOld_ValueNew_Value

将有一个审计表,它将捕获该数据库中所有表的更改。我相信我们可以为该数据库的每个表创建触发器。但是,请让我知道如何将所有数据添加到一个审核表中。如果您可以为我提供一个可行的示例,将非常有帮助。

谢谢,帕萨


问题答案:

我可以为您提供一种算法,大多数基础工作已经完成:

这可以是您的审核表,应根据您的要求添加时间戳列作为修改日期或更多信息:

CREATE TABLE audit (
     old_data VARCHAR(100),
     new_data VARCHAR(100),
     tbl_name VARCHAR(100)
)
|

可以用作参考触发;请注意,每个表都会有一个单独的触发器:

CREATE TRIGGER testtrigger BEFORE UPDATE ON <table_name>
  FOR EACH ROW BEGIN
    INSERT INTO audit(old_data, new_data, tbl_name) VALUES (OLD.first_name, NEW.first_name, "testtable");
  END;
|

每一列可以有多个插入语句。如果要限制不插入未更改的数据,则可以在触发器中进行以下更改:

IF(OLD.column_name <> NEW.column_name) THEN
    --Your insert query here
ELSE
    --NOOP
END IF;

让我们知道是否需要更多信息。



 类似资料:
  • 问题内容: 我有两个桌子和。修改表格时,我需要在内插入一条新记录: 我需要在更新前后将状态的XML表示形式放入和中。 该表是: 我找到了如何获取行的xml表示形式的方法: 仅举例来说。因此,在触发器中,我需要创建来自和表的行的xml表示形式。 这是触发器: 因此,如何连接and表的两个表示形式以将它们正确地插入?中?谢谢。 问题答案: 很高兴您已经找到了解决方案… 我只是在想类似的事情… 您的方法

  • 我是< code>sqlite数据库的新手,在我的项目中,我需要在创建数据库后添加数据。我尝试了这种方式,这是我的代码。 公共类主要活动扩展活动 { } 我创建了另一个类来打开sqlite数据库。 公共类MySqlHelper扩展SQLiteOpenHelper{ 公共字符串getBird(int id){ 它给我异常 帮助我避免这种情况,并在创建数据库后立即插入数据。

  • 在我的Spring Boot应用程序中,我想审计DTO而不是实体,并将审计逻辑移动到公共库中,公共库将具有@Enable审计注释以在方法级别审计DTO。如果我使用JaversBuilder.javers(). build();在公共库中,我将无法提交数据,因为它对数据源一无所知。 我想在我的应用程序中创建Javers实例,并将数据源传递给它,然后将Javers实例传递给公共库以执行提交。在Spri

  • 问题内容: 我在不同的主机上有2个mysql数据库,想在将数据插入到另一个数据库后将触发器插入到另一个数据库中。我是mysql的新手,在sql server中我可以创建链接服务器并完成它。但是如何在mysql中做呢?两个数据库都有相似的表 问题答案: 为了能够继续进行此操作,必须首先确保两个服务器具有相同的配置。为了完成您想做的事情,可以在两个服务器上结合使用FEDERATED存储引擎和触发器,以

  • 主要内容:基本语法,创建 BEFORE 类型触发器,创建 AFTER 类型触发器触发器是与 MySQL 数据表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。 基本语法 在 MySQL 5.7 中,可以使用 CREATE TRIGGER 语句创建触发器。 语法格式如下: CREATE <触发器名> < BEFORE | AFTER > <INSERT | UPDATE | DELETE > ON <

  • 进入函数详情页,点击“触发器”标签,展示当前函数配置的触发器,点击“创建新触发器”,选择HttpTrigger,填写对应信息。 路径映射必须以“/”开头,可以选择以GET或POST方法触发函数。 创建触发器后,触发器详情页面可对触发器进行修改及删除的操作,点击下图所示图标,可以获得HTTPS URL,通过该URL在浏览器或终端直接访问,触发Hello World函数。