下面是我的触发器:删除触发器在多行
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