假设我有下表
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怎么样?
如果没有,我最好的选择是什么?
答案 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();
答案 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'之后放置新的分隔符,然后将分隔符更改回';'完成后。