mysql创建触发器ON INSERT

时间:2013-02-27 04:07:04

标签: mysql triggers insert

假设我有下表

create table try  ( name varchar(10), username varchar(10))

是否可以通过触发'ON INSERT'来设置username = user()?

我试过

create trigger userIns ON INSERT on try for each row set new.username=user();

但这会产生一些语法错误

我见过关于BEFORE INSERT,INSTER INSERT之后的文档。 ON INSERT怎么样?

如果没有,我最好的选择是什么?

4 个答案:

答案 0 :(得分:3)

语法为:

CREATE TRIGGER trigger_name trigger_time trigger_event
ON table_name
FOR EACH ROW
BEGIN
...
END

trigger_time部分的语法错误。

  

触发激活时间可以是之前或之后。你必须指定   定义触发器时的激活时间。您使用BEFORE关键字if   您希望在对表进行更改之前处理操作   如果您需要在更改后进行处理,请在此之后。

试试这个:

create trigger userIns BEFORE INSERT on try for each row set new.username=user();

更多:MYSQL Trigger Tutorial

答案 1 :(得分:0)

正确的语法是

Create Trigger trigger_name trigger_time trigger_event
on table_name
for each row
begin
....

end

Trigger_time =>之前|后 trigger_event =>插入|更新|删除

请检查

create trigger userIns INSERT on try for each row begin set new.username=user() end;

答案 2 :(得分:0)

以上都不是我的问题。我真的在寻找一个ON INSERT触发器 - 但它在MYSQL中不存在。所以我使用BEFORE INSERT并且工作正常

create trigger userIns BEFORE INSERT on try for each row set new.CREATED_BY=user();

答案 3 :(得分:0)

问题是您需要将分隔符设置为“;”以外的其他内容在开始触发代码之前。在'end'之后放置新的分隔符,然后将分隔符更改回';'完成后。