【发布时间】:2016-11-30 21:35:45
【问题描述】:
我的问题是我需要创建一个而不是删除触发器,以防止在过去两年内销售过的产品被删除。否则,它应该与产品的所有订单行一起删除。
我的表格如下所示:
PRODUCT_TABLE: ID, price
ORDERITEM_TABLE: ID, Quantity, productid, ordersid
ORDERS_TABLE: ID, Orderdate
这是我的第一个触发器,所以我现在很无能,但有一个想法可以做这样的事情:
CREATE TRIGGER productdelete
ON product
INSTEAD OF DELETE
AS
BEGIN
DECLARE @today datetime, @orderdate date
SET @today = GetDate()
IF NOT EXISTS(SELECT productid from product where productid = (select productid from deleted) and (SELECT orderdate from orders) > (SELECT DATEADD(YEAR, -2, @today)))
raiserror ('Unable to delete', 16,1)
rollback tran
END
触发器将在表中没有的任何 productid 上触发。
有人有什么建议吗?
【问题讨论】:
-
你不是今天早些时候发布了这个问题吗?我知道我今天早些时候看到了这个确切的问题。您的条件逻辑不正确。它需要将 Order 表中的 OrderDate 与今天的日期进行比较。
标签: sql sql-server tsql triggers