¡¡¡¡
SQLServerÖзÀÖ¹²¢·¢²åÈëÖØ¸´Êý¾Ý£¬´óÖÂÓÐÒÔϼ¸ÖÖ·½·¨£º
1.ʹÓÃPrimary Key£¬Unique KeyµÈÔÚÊý¾Ý¿â²ãÃæÈÃÖØ¸´Êý¾ÝÎÞ·¨²åÈë¡£
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£¬ËäÈ»ÄÜËø×¡£¬µ«²¢·¢ÐÔÄÜÒ²²»¼Ñ¡£
if @@ROWCOUNT = 0
insert into Table (****) values(****);
Commit Tran
set transaction isolation level SERIALIZABLE
Begin Tran
select 1 from Table with(UPDLOCK) where **** --ÕâÀï¼´ËãÓÐË÷ÒýÖ§³ÅµÄÇé¿öÏ£¬¼ÓµÄÒ²ÊÇ·¶Î§ËøRangeS-U£¬ËäÈ»ÄÜËø×¡£¬µ«²¢·¢ÐÔÄÜÒ²²»¼Ñ¡£
if @@ROWCOUNT = 0
insert into Table (****) values(****);
Commit Tran