我正在尝试创建一个触发器,将整行复制到任何 UPDATE 上的审核表。
我有2张桌子
Frequencies
和Frequencies_Audit
这是我的触发器。
create trigger auditlog
before update on frequencies
for each row insert into
frequencies_audit select frequencies.*;
当我更新记录时,我得到了未知表frequencies
。
我不希望必须单独输入每个字段名称,因为我们不断在数据库中添加列。
答案 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
。
可能对你有帮助。