我刚学MYSQL不久,遇到一个问题:用触发器实现一条记录是否可以插入表中。
比如一个表
create table t
( id int,
count int,
sum int
);
比如判断条件是:当count的值大于100时,就不能添加这条记录。
我在一本MYSQL的书上见到一个类似的例子:
create trigger born_vs_joined
before insert, update on players for each row
begin
if year(NEW.birth_date)>=NEW.joined) then
rollback work;
end if;
end
于是我也按照例子使用了rollback work,但是会报错:
ERROR 1422 (HY000): Explicit or implicit commit is not allowed in stored function or trigger.
说在存储函数或触发程序中,不允许显式或隐式提交。但是书上却是那样写的,到底应该怎么做?
希望高手指点一下,该用什么方法实现?我会在线等的。谢谢了!!!
比如一个表
create table t
( id int,
count int,
sum int
);
比如判断条件是:当count的值大于100时,就不能添加这条记录。
我在一本MYSQL的书上见到一个类似的例子:
create trigger born_vs_joined
before insert, update on players for each row
begin
if year(NEW.birth_date)>=NEW.joined) then
rollback work;
end if;
end
于是我也按照例子使用了rollback work,但是会报错:
ERROR 1422 (HY000): Explicit or implicit commit is not allowed in stored function or trigger.
说在存储函数或触发程序中,不允许显式或隐式提交。但是书上却是那样写的,到底应该怎么做?
希望高手指点一下,该用什么方法实现?我会在线等的。谢谢了!!!
drop trigger if exists trigger_insert//
create trigger trigger_insert before insert on players for each row
begin
declare cnt int default 0;
begin
select count into cnt from players where id=NEW.id;
if(cnt>100) then
rollback work;
end if;
end;
end;
//
delimiter ;