MySQL触发器的创建和使用

广告位

    ① 在学生表Student中定义一个触发器 tri1,保证新添加的学生的年龄(Sa…

 

 

① 在学生表Student中定义一个触发器 tri1,保证新添加的学生的年龄(Sage)在16~25岁之间。

DROP TRIGGER if EXISTS tri1;  #避免重复出现tri1 delimiter ;;	#开始 CREATE TRIGGER tri1 BEFORE INSERT ON student FOR EACH ROW BEGIN 	IF(new.Sage > 25) OR (new.Sage > 16) THEN 	SIGNAL SQLSTATE 'HYOOO' SET message_text = '输入的年龄要在16~25之间'; 	END IF; END;; delimiter;	#结束  #调用触发器 insert into Student values('200231001', '王涛', '男', 30, 'IS') 

查看触发器:
MySQL触发器的创建和使用

调用结果:
MySQL触发器的创建和使用

② 在成绩表SC中定义一个触发器tri2,当修改一个记录时,确保此记录的成绩(Grade)在0~100分之间。

DROP TRIGGER if EXISTS tri2;  #避免重复出现tri2 delimiter ;;	#开始 CREATE TRIGGER tri2 AFTER UPDATE ON sc FOR EACH ROW BEGIN 	IF(new.grade > 100) OR (new.grade < 0) THEN 	SIGNAL SQLSTATE 'HYOOO' SET message_text = '成绩应在0~100分之间'; 	END IF; END;; delimiter;	#结束  #调用触发器 update SC set Grade=120 where Sno='200215122' 

查看触发器:
MySQL触发器的创建和使用

调用结果:
MySQL触发器的创建和使用

③ 在学生表Student中创建一个触发器tri3,当删除学生表Student中学生时,自动删除成绩表SC中相应学生的选课记录。

DROP TRIGGER if EXISTS tri3;  #避免重复出现tri3 delimiter ;;	#开始 CREATE TRIGGER tri3 AFTER DELETE ON student FOR EACH ROW BEGIN 	DELETE FROM sc WHERE sno = old.sno; END;; delimiter;	#结束  #调用触发器 delete from Student where Sno = '200215122' 

查看触发器:
MySQL触发器的创建和使用

调用结果:
MySQL触发器的创建和使用
MySQL触发器的创建和使用
注:删除之后 Student表 和 SC表都没有 ‘200215122’

 

說着敷衍話

关于作者: 說着敷衍話

为您推荐