我遇到了一些複雜的查詢,需要我在表中插入一些東西的麻煩,但如果我發現兩列是相同的,我應該用觸發器停止事務。我做了一些代碼來做到這一點,但即使它現在正常工作,我也不能確定它是否100%。我可以在SQL Server中的INSTEAD OF INSERT觸發器中插入INSERT嗎?
alter trigger TR1
on Passer instead of insert
as
begin
declare @A int
declare @B int
declare @C int
set @A = (select code_ligne from inserted)
set @B = (select ordre_passage from inserted)
set @C = (select code_ville from inserted)
select * from passer
where code_ligne = @A
and ordre_passage = @B
if(@@rowcount = 0)
begin
insert into Passer values(@A,@C,@B)
print 'okay'
print @@rowcount
end
end
觸發誤解101:插入只有一行。插入可以有多個行。 – mxix
感謝您的評論先生,所以你的意思是我有一個問題,當我插入多行? –
是的,您將遇到多行問題。爲什麼不在code_ligne和ordre_passage上設置唯一約束?如果有人試圖再次插入該複合密鑰,它將引發唯一的密鑰錯誤。 – mxix