我有一個定義之間的許多一對多的關係,例如,Customer
和Orders
,像這樣的中間表中選擇已刪除表中的特定行:觸發
USE [master]
GO
CREATE DATABASE Example
GO
USE [Example]
GO
CREATE TABLE [dbo].[CustomerOrders](
[CustomerId] [int],
[OrderId] [int]
)
GO
INSERT INTO CustomerOrders (CustomerId, OrderId) VALUES (1, 1)
INSERT INTO CustomerOrders (CustomerId, OrderId) VALUES (1, 2)
INSERT INTO CustomerOrders (CustomerId, OrderId) VALUES (2, 1)
GO
CREATE TRIGGER [dbo].[CustomerOrdersRemoved]
ON [dbo].[CustomerOrders]
FOR DELETE
AS
BEGIN
SET NOCOUNT ON;
--IF NOT EXISTS (SELECT CustomerId FROM CustomerOrders
INNER JOIN deleted ON CustomerOrders.CustomerId=deleted.CustomerId)
--this wont work
END
GO
DELETE CustomerOrders WHERE OrderId=1
GO
現在,我需要有在此表上觸發一個ON DELETE
觸發器,這將需要更新另一個表,其基於客戶誰不有任何訂單留在表中。在這種情況下,在DELETE
操作之後,CustomerId=1
的客戶將有1個訂單,剩餘訂單號碼爲OrderId=2
,客戶訂單號爲CustomerId=2
的訂單沒有剩餘訂單。所以我只需要取得客戶CustomerId=2
從刪除vtable
在觸發器內。
我該如何做到這一點?
你不能做這樣的事:@變量=(SELECT客戶編號已刪除),因爲它會拋出時,觸發將在刪除被解僱多行,因爲它們不能被分配給1個變量。 – kateroh 2010-11-10 23:59:24
我看,情況不一樣。 – 2010-11-11 00:14:41