Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何跟踪数据库表中多列的更改以进行审核?_Mysql_Database_Database Design - Fatal编程技术网

Mysql 如何跟踪数据库表中多列的更改以进行审核?

Mysql 如何跟踪数据库表中多列的更改以进行审核?,mysql,database,database-design,Mysql,Database,Database Design,这个问题已经被回答了好几次:,以及外部链接和 我理解上述线程中描述的方法,并计划使用这种方法 但在实现这一点上,我基本上没有什么疑问 在我的例子中,一行中的多个列可以同时更新,因此以下是正确的实现方法: 查找操作类型(插入/更新/删除) 找出正在更新的列 更新前读取整行 在审核表中为每一列插入一行,该列使用新旧值(以及其他详细信息)进行更改 更新表 假设您使用的是mySQL的最新版本,我个人会使用 假设它们与我在其他产品(如Oracle)中所熟悉的产品差不多一样工作,您的问题就会变得简单,因为您

这个问题已经被回答了好几次:,以及外部链接和

我理解上述线程中描述的方法,并计划使用这种方法

但在实现这一点上,我基本上没有什么疑问

在我的例子中,一行中的多个列可以同时更新,因此以下是正确的实现方法:

  • 查找操作类型(插入/更新/删除)
  • 找出正在更新的列
  • 更新前读取整行
  • 在审核表中为每一列插入一行,该列使用新旧值(以及其他详细信息)进行更改
  • 更新表

  • 假设您使用的是mySQL的最新版本,我个人会使用

    假设它们与我在其他产品(如Oracle)中所熟悉的产品差不多一样工作,您的问题就会变得简单,因为您在行上放置了一个“更新”触发器,并使用它来更新您感兴趣的每个字段的审核表


    可能的警告:如果您的应用程序仅以一个用户的身份登录数据库(例如,如果您使用连接池,这是一种常见的方法),那么记录实际用户身份可能会很棘手。

    mysql不支持触发器吗?@p.marino:我想从应用程序而不是使用触发器来完成此操作。我在上面提到的一个链接中读到了使用触发器的利弊。对我来说,在应用程序中也更简单。使用触发器更容易做到这一点!在我的例子中,找到真正的用户身份并不是问题。然后我真的认为触发器是解决问题的方法,除非mySQL有一些模糊的问题(不太熟悉,我的错)。