如何创建一个不允许您删除在 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
如何创建一个不允许您删除在 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
也许是这样的:
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;