mysql中触发器问题,第一个触发器不能插入数据,但是删除第二个触发器后第一个触发器就可以插入数据
在license表上建立一个触发器,目的是领取证书后将student中的离校时间改为领取证书时间,并设置为结业DELIMITER&&CREATETRIGGERlicens...
在license表上建立一个触发器,目的是领取证书后将student中的离校时间改为领取证书时间,并设置为结业
DELIMITER &&
CREATE TRIGGER license_stu AFTER INSERT
ON license FOR EACH ROW
BEGIN
UPDATE student SET leave_time=NEW.receive_time,scondition= '结业'
WHERE sno=NEW.sno;
END
&&
DELIMITER ;
更新student中的姓名后相应更改license中的姓名
CREATE TRIGGER update_sname AFTER UPDATE
ON student FOR EACH ROW
BEGIN
UPDATE license SET sname=NEW.sname WHERE sno=NEW.sno;
END 展开
DELIMITER &&
CREATE TRIGGER license_stu AFTER INSERT
ON license FOR EACH ROW
BEGIN
UPDATE student SET leave_time=NEW.receive_time,scondition= '结业'
WHERE sno=NEW.sno;
END
&&
DELIMITER ;
更新student中的姓名后相应更改license中的姓名
CREATE TRIGGER update_sname AFTER UPDATE
ON student FOR EACH ROW
BEGIN
UPDATE license SET sname=NEW.sname WHERE sno=NEW.sno;
END 展开
1个回答
展开全部
触发器2 修改为:
CREATE TRIGGER update_sname AFTER UPDATE
ON student FOR EACH ROW
WHEN ( new.sname <> old.sname )
BEGIN
UPDATE license SET sname=NEW.sname WHERE sno=NEW.sno;
END
主要是增加一行
WHEN ( new.sname <> old.sname )
这样你触发器一执行
UPDATE student SET leave_time=NEW.receive_time,scondition= '结业'
WHERE sno=NEW.sno;
将不会触发到触发器二。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询