我在数据库中有一些记录,如果我客户删除一条记录,我使用该记录id从该表复制数据并将其插入归档表
$sqlarch = "INSERT customers_archive SELECT * FROM customers_record WHERE UCI = '8233379' "
给定数据库中两个表的名称和一个可能被误解的问题,与关于trigger
的评论保持一致,也许以下可能是有用的。
要复制customers_record
表,使其适合作为customers_record
表的archived
版本,只需使用以下命令创建一个克隆:
create table `customers_archive` like `customers_record`
,然后创建一个简单的触发器,该触发器将使用使用
删除的记录的副本填充新表:CREATE TRIGGER `trCustomers_Archive` BEFORE DELETE ON `customers_record` FOR EACH ROW BEGIN
insert into `customers_archive` select * from `customers_record` where `UCI`=old.`UCI`;
END
如果您添加额外的列来记录正在执行的sql操作的类型,并且可能还可以记录用户,则可以将相同的逻辑扩展为在特定表上执行的任何操作的日志,这对审计目的很有用。