create table students(id int auto_increment,
name varchar(10) not null DEFAULT '',
age int not null DEFAULT 0,
sex varchar(2) not null DEFAULT '',
studId varchar(18) not null DEFAULT '',
PRIMARY KEY (`id`))
触发器:
DELIMITER $$
CREATE TRIGGER `students_insert` BEFORE INSERT ON `students`
FOR EACH ROW
BEGIN
if mod(substring(new.studId,17,1),2)=0 then
set new.sex = '女'
else
set new.sex = '男'
end if
END
$$
DELIMITER
以上程序已测试通过,
另外友情提醒一下,在触发器中处理这个判断,效率不高,最好在程序中处理这部分逻辑.
mysql可以使用if语句啊
比如:
if (条件) then*** 作
else
*** 作
end if
MYSQL没有TRIGGER回滚 create trigger update_exceed BEFORE INSERT on Afor each rowbegin select count(*) into @ee from A where UserID=new.UserID if @ee>=5 then insert into A(id) values(0) end ifend 加粗部分,就是拦截部分。由于MYSQL在触发器内不允许对自身的修改,所以会产生一个1442的错误,插入失败。</SPAN>欢迎分享,转载请注明来源:内存溢出
评论列表(0条)