delimiter @@
create trigger nameCheck before insert on tblEmployee
for each row
begin
if tblEmployee.Loginname regexp "![a-z]+" || length(tblEmployee.Loginname) < 4 || length(tblEmployee.Loginname) > 8 || Loginname = name
then
insert into error values(1) ;
end if ;
end @@
我想让loginname这个字段的长度不能小于4不能大于八不能和name字段相同,并且这个字段还非得是a到z的字母,如果不符合条件的话,就往一个不存在的表 error表插入一个数据以此来中断事务。
但实际上我的问题是,无论我loginname里面输入的字母是对还是错,都会被中断事务,这是为什么呢?难道是我的trigger写错了么?
先谢谢大家的热心回答!!!
补充一下 , 报的错是
if tblEmployee.Loginname regexp "![a-z]+" || length(tblEmployee.Loginname) < 4 || length(tblEmployee.Loginname) > 8 || Loginname = name
修改为:
if NEW.Loginname regexp "![a-z]+" || length(NEW.Loginname) < 4 || length(NEW.Loginname) > 8 || NEW.Loginname = NEW.name
将存储过程中的表名tblEmployee换成NEW。
用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢!
对了,复制过去就可以运行了,编译是没有错误的