1

假设我有下表

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();

但这会产生一些语法错误

我看过有关插入前和插入后的文档。ON INSERT 怎么样?

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

4

4 回答 4

3

语法是:

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

您的语法trigger_time部分错误。

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

试试这个 :

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

更多:MYSQL 触发器教程

于 2013-02-27T04:11:53.973 回答
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;
于 2013-02-27T04:10:50.567 回答
0

以上都不是我的问题。我真的在寻找一个 ON INSERT 触发器——但它在 MYSQL 中不存在。所以我使用了 BEFORE INSERT 并且效果很好

create trigger userIns BEFORE INSERT on try for each row set new.CREATED_BY=user();
于 2013-03-15T21:22:32.090 回答
0

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

于 2013-12-20T03:44:57.800 回答