通過SQLServer創建索引時,有一個IGNORE_DUP_KEY的選項,可以類似實現。
IGNORE_DUP_KEY = { ON | OFF }
指定對唯一聚集索引或唯一非聚集索引執行多行插入操作時出現重復鍵值的錯誤響應。默認值為 OFF。
ON
發出一條警告信息,但只有違反了唯一索引的行才會失敗。
OFF
發出錯誤消息,並回滾整個 INSERT 事務。
IGNORE_DUP_KEY 設置僅適用於創建或重新生成索引后發生的插入操作。該設置在索引創建操作期間無效。
對於 XML 索引以及對視圖創建的索引,IGNORE_DUP_KEY 不能設置為 ON。
在向后兼容的語法中,WITH IGNORE_DUP_KEY 等效於 WITH IGNORE_DUP_KEY = ON。
create table test1(rsmainkeyid int identity(1,1),rsdatetime datetime,userid int , teacherid int) --建立唯一索引,注意 IGNORE_DUP_KEY = ON CREATE UNIQUE NONCLUSTERED INDEX [idx_test] ON [dbo].[test1] ( [userid] ASC, [teacherid] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = ON, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO create table #t11 (userid int ,teacherid int) declare @i int set @i=1 while @i<1000 begin insert #t11 values(@i,@i) set @i=@i+1 end update #t11 set userid =1 ,teacherid=1 where userid =999 insert into test1 (rsdatetime, userid ,teacherid) select GETDATE(),userid ,teacherid from #t11 --998 已忽略重復的鍵。 (998 行受影響)