-2

如何创建一个不允许您删除在 Northwind 数据库中下达 10 个以上订单的员工的 SQL 触发器?

我已经做到了这一点:

CREATE TRIGGER emplDel ON Employees AFTER DELETE
AS
BEGIN
DECLARE @num INT
SELECT @num= COUNT(OrderID)
FROM Orders
WHERE EmployeeID= --what id should i use?
if (@num>10)
ROLLBACK
END
4

1 回答 1

1

也许是这样的:

CREATE TRIGGER empDel ON [Employees]
  INSTEAD OF DELETE
AS
  BEGIN
    WITH  orderCounts
            AS (
                 SELECT [EmployeeID],
                        (
                          SELECT  COUNT(*)
                          FROM    [Orders] AS [o]
                          WHERE   [o].[EmployeeID] = [d].[EmployeeID]
                        ) AS OrderCount
                 FROM   [Deleted] AS [d]
               )
      DELETE  FROM [Employees]
      WHERE   EXISTS ( SELECT *
                       FROM   [orderCounts] oc
                       WHERE  oc.[EmployeeID] = [Employees].[EmployeeID] AND
                              [oc].[OrderCount] < 10 );

  END;
于 2015-09-16T18:43:34.767 回答