在SQL中自动删除已删除类别的产品

时间:2012-11-12 02:04:30

标签: sql sql-server tsql

我有两张桌子:

产品

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

类别

CategoryID   CategoryName
981          PC parts

如果我删除某个类别,我该如何使用触发器...

自动删除其下的产品

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以使用删除级联来删除两个表中的数据。