2009-11-16 108 views
0

我有一个触发器AFTER插入其中,我必须更新刚插入的行的列的值。我显然不能使用:如何更改AFTER INSERT触发器中的列值?

SET new.column = value; 

我试过做手动更新的触发器,但它也是不允许的。

有没有简单的方法来解决这个问题?

非常感谢!

回答

4

AFTER触发器通常用于更新除正在更新的行以外的内容。例如,如果您想记录已进行更新的事实,AFTER触发器是理想的。

要更改列插入时的值,您需要使用before触发器。例如

CREATE TRIGGER modify_column BEFORE INSERT ON mytable SET @column = value;

如果值是一个查询,预先定义的值或NEW.column

+0

谢谢!但是我不能在同一个触发器中执行这两个操作(即,后一个) – Amadeus45 2009-11-16 07:54:25

+0

@ Amadeus45:这是BEFORE触发器和AFTER触发器之间的区别。您只能在写入数据库之前更改新行。 – 2009-11-16 08:06:19

1

由于INSERT已经通过之后触发的时候做的,我想你将不得不写ŧ -SQL根据您的主键更改值。

如果您想在插入之前更改它,您可能需要考虑转而使用BEFORE触发器。