而不是删除TRIGGER阻止销售产品上的删除

时间:2016-11-30 21:35:46

标签: sql sql-server tsql triggers

我的问题是我需要创建一个而不是删除触发器,以防止产品在过去两年内被销售时被删除。否则,应该删除该产品的所有订单行。

我的表看起来像这样:

string lineArr[];

这是我的第一个触发因素,所以我现在很无能为力,但有想法做这样的事情:

PRODUCT_TABLE: ID, price
ORDERITEM_TABLE: ID, Quantity, productid, ordersid
ORDERS_TABLE: ID, Orderdate 

触发器将触发表中没有的任何产品。

有人有任何建议吗?

2 个答案:

答案 0 :(得分:0)

由于您使用的是INSTEAD OF触发器,因此无需回滚事务。

如果条件允许,只需在触发器代码中执行DELETE,否则不执行任何操作。

答案 1 :(得分:0)

触发器在隐式事务下运行。

CREATE TRIGGER productdelete
ON product
INSTEAD OF DELETE
AS 
BEGIN

    IF EXISTS(SELECT NULL from deleted) and ..
       raiserror ('Unable to delete', 16,1)
    ELSE IF
      delete from yourtable where xx in (select yy from deleted)

END