1. 为“商店”表创建一个级联更新触发器TRI_商店。要求:若修改“商店”表中的商店编号,则“商品”表中与该商店相关的商店编号自动修改。
时间: 2023-12-16 07:03:17 浏览: 79
下面是创建级联更新触发器TRI_商店的SQL语句:
```
CREATE TRIGGER TRI_商店
AFTER UPDATE ON 商店
FOR EACH ROW
BEGIN
IF NEW.商店编号 != OLD.商店编号 THEN
UPDATE 商品 SET 商店编号 = NEW.商店编号 WHERE 商店编号 = OLD.商店编号;
END IF;
END;
```
该触发器在商店表的更新操作上触发,对于每一行的更新,判断新的商店编号是否与旧的商店编号不同,若不同,则将商品表中与该商店相关的商店编号修改为新的商店编号。这样就实现了商店表和商品表的级联更新。
相关问题
在sh_user表上创建DELETE触发器tri_delete,实现当删除用户表sh_user中的用户时,级联删除订单表中该用户对应的订单数据
可以使用以下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操作,触发器不会执行。
MySQL在sh_user表上创建DELETE触发器tri_delete,实现当删除用户表sh_user中的用户时,级联删除订单表中该用户对应的订单数据。
可以使用以下代码创建DELETE触发器tri_delete:
```
CREATE TRIGGER tri_delete
AFTER DELETE ON sh_user
FOR EACH ROW
BEGIN
DELETE FROM order_table WHERE user_id = OLD.user_id;
END;
```
在上面的代码中,`tri_delete`是触发器的名称,`sh_user`是要在其上创建触发器的表名,`order_table`是要进行级联删除的订单表的名称,`user_id`是订单表中与用户表关联的列名,`OLD.user_id`是指删除前用户表中的`user_id`值。
当删除用户表中的一个用户时,触发器会自动执行并将该用户对应的订单数据从订单表中删除。
阅读全文