SQLServer中防止并發(fā)插入重復(fù)數(shù)據(jù),大致有以下幾種方法:
1.使用Primary Key,Unique Key等在數(shù)據(jù)庫層面讓重復(fù)數(shù)據(jù)無法插入。
2.插入時(shí)使用條件
insert into Table(****) select **** where not exists(select 1 from Table where ****);
3.使用SERIALIZABLE隔離級(jí)別,并且使用updlock或者xlock鎖提示(等效于在默認(rèn)隔離級(jí)別下使用(updlock,holdlock)或(xlock,holdlock))
set transaction isolation level SERIALIZABLE Begin Tran select 1 from Table with(UPDLOCK) where **** --這里即算有索引支撐的情況下,加的也是范圍鎖RangeS-U,雖然能鎖住,但并發(fā)性能也不佳。 if @@ROWCOUNT = 0 insert into Table (****) values(****); Commit Tran
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
標(biāo)簽:來賓 新鄉(xiāng) 黃山 東營 池州 大同 文山 濱州
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQLServer中防止并發(fā)插入重復(fù)數(shù)據(jù)的方法詳解》,本文關(guān)鍵詞 SQLServer,中,防止,并發(fā),插入,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。