2016-12-13 55 views
0

第一次绑定在mysql中使用触发器。我在AFTER UPDATE中没有任何问题,它只向我的审计文件写入一条记录。 但是,当我执行AFTER INSERT时,它会将原始表中的所有记录副本写入审计表。我只是写了一个更改后的记录到审计文件。我想这是因为'For each row',但我发现的所有例子都包含这个命令。我错过了什么?插入后触发将所有行的副本写入审计文件

CREATE TRIGGER insertafter AFTER INSERT ON `delete4try` 
FOR EACH ROW INSERT INTO delete4try_audit 
SELECT h . * , NULL , NOW() FROM delete4try h 

回答

0

,因为你没有WHERE子句, 你可能想使用NEW.col1,NEW.col2例如,取出从delete4try

CREATE TRIGGER insertafter AFTER INSERT ON `delete4try` 
FOR EACH ROW INSERT INTO delete4try_audit 
SELECT NEW.col1,NEW.col2,NULL,NOW() 

col1和col2上只是选择样本用您的实际列名替换它们。

+0

例如,如果您的delete4try有一个名为col1的列,则NEW.col1将返回用于插入col1的值以用于刚插入的新行 –