1

我有 2 张桌子:

产品

ProductID     ProductName      CategoryName    Price
102           keyboard         PC parts        800
103           mouse            PC parts        900

类别

CategoryID   CategoryName
981          PC parts

如果我删除一个类别,我想如何使用触发器自动删除其下的产品...

4

2 回答 2

3

实际上,您可能不会Trigger在这里使用,这是创建设置了标志的FOREIGN KEY约束的唯一方法DELETE CASCADE

CREATE TABLE Category
(
    CategoryID   INT,
    Categoryname VARCHAR(50),
    CONSTRAINT tb_pk PRIMARY KEY (CategoryID),
    CONSTRAINT tb_uq UNIQUE (Categoryname)
)
GO

CREATE TABLE Product
(
    ProductID    INT,
    ProductName  VARCHAR(50)  ,  
    CategoryID   INT ,
    Price        DECIMAL(10,2),
    CONSTRAINT p_pk PRIMARY KEY (ProductID),
    CONSTRAINT p_uq UNIQUE (ProductName),
    CONSTRAINT p_fk FOREIGN KEY (CategoryID)
         REFERENCES Category(CategoryID) ON DELETE CASCADE
)
GO

当您尝试删除表Category上的某些内容时Category,它会自动删除其子行,因为表Product依赖于表Category

于 2012-11-12T02:13:40.453 回答
0

您可以使用 on delete cascade 从两个表中删除数据。

于 2012-11-12T09:52:06.677 回答