在sh_user表上创建DELETE触发器tri_delete,实现当删除用户表sh_user中的用户时,级联删除订单表中该用户对应的订单数据
时间: 2024-02-03 20:14:29 浏览: 70
可以使用以下SQL语句来创建触发器:
```
CREATE TRIGGER tri_delete
AFTER DELETE ON sh_user
FOR EACH ROW
BEGIN
DELETE FROM order_table WHERE user_id = OLD.user_id;
END;
```
这个触发器的含义是:在sh_user表上进行DELETE操作时,每当一行被删除时,触发器将会执行。触发器中的DELETE语句将会从order_table表中删除所有属于被删除用户的订单数据。其中,OLD.user_id表示被删除的行的user_id值。注意,这个触发器只能在sh_user表上进行DELETE操作时才会执行,如果在其他表上进行DELETE操作,触发器不会执行。
相关问题
1)为学生表建立一个名TRI_INSERT的INSERT触发器。功能是当用户向学生表添加数据时,同时也把这些数据添加到stu_tri表中。其中:学生表和表stu_tri的结构相同; 2)为学生表建立一个名TRI_DELETE的DELETE触发器。功能是当用户从学生表删除数据时,同时把这些要删除的数据添加到stu_tri表中。其中:学生表和表stu_tri的结构相同。
1)创建TRI_INSERT触发器的SQL语句如下:
```sql
CREATE TRIGGER TRI_INSERT
AFTER INSERT ON 学生表
FOR EACH ROW
INSERT INTO stu_tri VALUES (NEW.id, NEW.name, NEW.age, NEW.gender);
```
其中,学生表的表名需要替换为实际的表名,stu_tri是存储触发器数据的表名,触发器中的NEW表示插入的新数据。
2)创建TRI_DELETE触发器的SQL语句如下:
```sql
CREATE TRIGGER TRI_DELETE
AFTER DELETE ON 学生表
FOR EACH ROW
INSERT INTO stu_tri VALUES (OLD.id, OLD.name, OLD.age, OLD.gender);
```
其中,学生表的表名需要替换为实际的表名,stu_tri是存储触发器数据的表名,触发器中的OLD表示删除的旧数据。
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;
```
阅读全文