为供应商表的删除操作定义一个触发器,要求在删除供应商记录时,将这个供应商所有供应情况从SPJ表中删去
时间: 2024-12-13 16:14:53 浏览: 14
为达到这个目的,你可以创建一个数据库触发器(Trigger),它是一种特殊的存储过程,在特定的数据库事件(如插入、更新或删除数据)发生时自动执行。在这个例子中,我们关注的是删除操作。以下是定义一个这样的触发器的一个基本步骤,假设我们正在使用SQL Server:
```sql
CREATE TRIGGER DeleteSupplierAndRelatedSupplyRecords
ON Suppliers -- 触发器关联的表名
AFTER DELETE -- 指定在删除操作后触发
AS
BEGIN
SET NOCOUNT ON; -- 关闭进度条显示
-- 遍历被删除的每个供应商ID
DECLARE @supplier_id INT;
SELECT @supplier_id = deleted.SupplierID FROM inserted -- inserted和deleted分别是删除前后的临时表
WHILE @supplier_id IS NOT NULL
BEGIN
-- 从SPJ表中删除该供应商的所有供应记录
DELETE FROM SPJ
WHERE SupplierID = @supplier_id;
-- 更新供应商ID,处理下一个记录
SELECT @supplier_id = deleted.SupplierID FROM inserted WHERE deleted.SupplierID > @supplier_id;
END
END;
GO
```
这个触发器会在`Suppliers`表上定义,并且当有供应商记录被删除时,会自动查找并删除`SPJ`表中与此供应商相关的所有供应情况。
阅读全文