MYSQL触发器更新复制整行

时间:2012-07-25 03:53:31

标签: mysql triggers

我正在尝试创建一个触发器,将整行复制到任何 UPDATE 上的审核表。

我有2张桌子

FrequenciesFrequencies_Audit

这是我的触发器。

create trigger auditlog 
before update on frequencies
for each row insert into
frequencies_audit select frequencies.*;

当我更新记录时,我得到了未知表frequencies

我不希望必须单独输入每个字段名称,因为我们不断在数据库中添加列。

2 个答案:

答案 0 :(得分:14)

而不是BEFORE UPDATE,您可以编写AFTER UPDATE触发器,如下所示::

DELIMITER //
CREATE TRIGGER auditlog AFTER UPDATE ON frequencies
FOR EACH ROW BEGIN  
    INSERT INTO frequencies_audit select * from frequencies where freqId = NEW.freqId;
END;//
DELIMITER ;

freqId只是Id列的名称。将其替换为频率表中Id列的名称。

答案 1 :(得分:0)

你可以试试这个

create trigger auditlog 
AFTER UPDATE on frequencies
for each row insert into
frequencies_audit select * from frequencies;

因为在MYSQL中如果你写了select TableName.*,那么它总是会返回错误Unknown table TableName

可能对你有帮助。