9、创建触发器tri_gender,实现当修改student表中学生的性别时,确保其性别必须为“男”或“女”。
时间: 2024-05-18 18:15:10 浏览: 15
您可以使用以下 SQL 语句创建名为 tri_gender 的触发器:
```
CREATE TRIGGER tri_gender
BEFORE UPDATE ON student
FOR EACH ROW
BEGIN
IF NEW.gender NOT IN ('男', '女') THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = '性别必须为“男”或“女”!';
END IF;
END;
```
这个触发器将在每次更新 student 表的行之前被触发。它会检查新的性别值是否为“男”或“女”,如果不是,则会引发一个 SQLSTATE 为 '45000' 的错误,其中包含“性别必须为‘男’或‘女’!”的信息。这样可以确保在修改性别时,只有正确的值才能被接受。
相关问题
3.建立触发器tri_delete_s2,当删除student表中记录时,将SC表相应记录同时删除。设计用例进行测试。删除触发器tri_delete_s2。
创建触发器:
```
CREATE TRIGGER tri_delete_s2
AFTER DELETE ON student
FOR EACH ROW
DELETE FROM SC WHERE SC.s_id = old.s_id;
```
测试用例:
1. 在student表中删除id为1的记录,检查SC表中是否同时删除了相应记录。
2. 在student表中删除id为2的记录,检查SC表中是否同时删除了相应记录。
3. 在student表中删除id为3的记录,检查SC表中是否同时删除了相应记录。
删除触发器:
```
DROP TRIGGER tri_delete_s2;
```
创建触发器 tri _ delete _ stu ,当在 Stu 表中删除一个学生时, sc 表中该生的选课记录也一并被删除。
可以使用以下代码创建触发器 tri_delete_stu:
```
CREATE TRIGGER tri_delete_stu
AFTER DELETE ON Stu
FOR EACH ROW
BEGIN
DELETE FROM sc WHERE sc.sno = OLD.sno;
END;
```
这个触发器会在 Stu 表中删除一条记录时被触发,然后删除 sc 表中所有与被删除学生相关的选课记录。其中,OLD.sno 表示被删除的学生的学号。