关于SQL Server的触发器问题(50分)

  • 主题发起人 主题发起人 SS2000
  • 开始时间 开始时间
S

SS2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个触发器,大概如下
REATE TRIGGER [DeleteContract] ON [Contract]
FOR DELETE
AS
Declare @ID int
select @ID=ID From deleted
delete from ContractDetail where ContractID=@ID
当我删除一个合同时,就触发该触发器,把该合同的细节记录一起删除
就是实现级联删除(我的是SQL SERVER7。0,没有直接的级联删除)
在我一个一个合同删除的时候,没有问题,可是我批量删除时,就不行了,
我找了资料,问题出在Select @ID=ID from deleted上,书上说当该Select
语句返回多行时,只把最后一行的数据付给该变量,这样我删除了多个合同,
而实际上只有最后的那个合同的细节被级联删除,其它的都没有删除。
问题是我没有找到解决办法,请大侠帮忙


 
为什么不用游标
 
delete from ContractDetail where ContractID in (select ID From deleted)
 
CREATE TRIGGER [DeleteContract] ON [Contract]
FOR DELETE
AS
delete ContractDetail where ContractID
in
( SELECT ID FROM DELETED)

搞定 给分!
 
其实我也想用where ContractID in (Select ID FROM deleted),不过没有去测试就请教
大家了,想不到还真就用它就可以了,给分,统统有份
 
分给错了,应该:刁么, 得分最多
 
后退
顶部