SQLServer中防止并發(fā)插入重復數(shù)據(jù),大致有以下幾種方法:
1.使用Primary Key,Unique Key等在數(shù)據(jù)庫層面讓重復數(shù)據(jù)無法插入。
2.插入時使用條件
insert into Table(****) select **** where not exists(select 1 from Table where ****);
3.使用SERIALIZABLE隔離級別,并且使用updlock或者xlock鎖提示(等效于在默認隔離級別下使用(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)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
您可能感興趣的文章:- SQL Server 批量插入數(shù)據(jù)的完美解決方案
- SQLServer2008存儲過程實現(xiàn)數(shù)據(jù)插入與更新
- Python實現(xiàn)讀取SQLServer數(shù)據(jù)并插入到MongoDB數(shù)據(jù)庫的方法示例
- 詳解C#批量插入數(shù)據(jù)到Sqlserver中的四種方式
- SQL Server批量插入數(shù)據(jù)案例詳解