下面是我的觸發器:刪除觸發器在多行
ALTER TRIGGER [dbo].[trgPaxeDeleted]
ON [dbo].[paxe]
AFTER DELETE
AS
declare
@HFflightID int,
@RFflightID int
BEGIN
Select @HFflightID = hfFlightID, @RFflightID = rfFlightID from deleted
-- Hinflug: flugKontingent hochsetzen --
UPDATE flightdata
SET flightQuota = flightQuota + 1
WHERE (flightID = @HFflightID)
-- Rückflug: flugKontingent hochsetzen --
UPDATE flightdata
SET flightQuota = flightQuota + 1
WHERE (flightID = @RFflightID)
END
這個工程上刪除單行罰款。但是當刪除多行時,只有一次觸發操作完成。
我該如何改變?
@AaronBertrand - 我想到了一個'或'聲明,但如果在' flightID'在'hfFlightID'和'rfFlightID'中?它不應該增加兩次嗎?我不知道用戶的數據結構是否可行。如果沒有,那麼是的,肯定合併這兩個陳述。 – LittleBobbyTables 2012-07-19 18:21:46
當您設置一個標量變量,從插入或刪除一個值,你將最有likley不能處理多行的觸發器。當然,觸發測試應該包括多行插入/更新/刪除以及單行測試。最糟糕的部分是它會導致數據完整性問題,因爲觸發器不會失敗,它只會作用於一條記錄。根據我的經驗,最終大多數帶有觸發器的表都需要從文件或某些文件導入數據。總是計劃多行。並且不要使用遊標或while循環來處理多個記錄!這可以殺死數據庫性能。 – HLGEM 2012-07-19 18:31:34
THX您的意見,但仍然只有一個行被刪除 – user168507 2012-07-19 18:44:25