6

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

我有 2 张桌子

FrequenciesFrequencies_Audit

这是我的触发器。

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

当我更新记录时,我得到 Unknown Table frequencies

如果可能,我不想单独输入每个字段名称,因为我们不断在数据库中添加列。

4

2 回答 2

17

而不是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 列的名称。

于 2012-07-25T05:51:12.260 回答
0

你可以试试这个

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

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

可能对你有帮助。

于 2012-07-25T04:14:30.003 回答