È«½Ó´¥SQLServerÒì³£Óë¹ÂÁ¢ÊÂÎñ
[[wiki]wiki[/wiki]][/wiki]¡¡¡¡Ò»¡¢Ê×ÏÈ´Ó[wiki]SQL[/wiki]ServerÖÐError½²Æð£¬SQLÖдíÎó´¦ÀíÓÐЩ¹Ö±Ù ´íÎó¼¶±ðͬÊÇ16µ«½á¹û¶¼²»Í¬
¡¡¡¡¡¡select * from Ò»¸ö²»Ôڵıí
¡¡¡¡¡¡if @@error<>0
¡¡¡¡¡¡¡¡print 'Õâ¸öûÓÐÊä³ö'
¡¡¡¡¡¡go
¡¡¡¡
¡¡¡¡¡¡raiserror('',16,3)
¡¡¡¡¡¡if @@error<>0
¡¡¡¡¡¡¡¡print 'Õâ¸öÊä³öÁË'
¡¡¡¡¡¡go
¡¡¡¡
¡¡¡¡¡¡exec('select * from Ò»¸ö²»Ôڵıí')
¡¡¡¡¡¡if @@error<>0
¡¡¡¡¡¡¡¡print 'Õâ¸öÊä³öÁË'
¡¡¡¡¡¡go
¡¡¡¡
¡¡¡¡¡¡exec sp_executesql N'select * from Ò»¸ö²»Ôڵıí'
¡¡¡¡¡¡if @@error<>0
¡¡¡¡¡¡¡¡print 'Õâ¸öÊä³öÁË'
¡¡¡¡
¡¡¡¡ÕâÑùÄã¿ÉÒÔ·¢ÏÖͨ¹ýexec»òsp_executesqlÖ´Ð[wiki]п[/wiki]ÉÒɵÄsql£¬ÕâÑù¾Í¿ÉÒÔÔÚºóÃæ²¶×½µ½±»Òì³£ÖÕÖ¹µÄ´íÎó¡£
¡¡¡¡
¡¡¡¡¶þ¡¢Òý³ö¹[wiki]ÂÁ[/wiki]¢ÊÂÎñ£º
¡¡¡¡1¡¢¹ÂÁ¢ÊÂÎñµÄ²úÉú
¡¡¡¡
¡¡¡¡¡¡¡¡select @@trancount µ±Ç°Á¬½ÓµÄ»î¶¯ÊÂÎñÊý --µ±Ç°Á¬½ÓµÄ»î¶¯ÊÂÎñÊýΪ0
¡¡¡¡
¡¡¡¡¡¡¡¡begin tran
¡¡¡¡
¡¡¡¡¡¡¡¡select * from Ò»¸ö²»Ôڵıí
¡¡¡¡¡¡¡¡if @@error<>0
¡¡¡¡¡¡¡¡begin
¡¡¡¡¡¡¡¡¡¡print 'ûÓÐÖ´Ðе½ÕâÀïÀ´!'
¡¡¡¡¡¡¡¡¡¡if @@trancount<>0 rollback tran
¡¡¡¡¡¡¡¡end
¡¡¡¡
¡¡¡¡¡¡¡¡commit tran
¡¡¡¡
¡¡¡¡¡¡¡¡select @@trancount µ±Ç°Á¬½ÓµÄ»î¶¯ÊÂÎñÊý¡¡--Ö´ÐкóÄã¿´¿´ µ±Ç°Á¬½ÓµÄ»î¶¯ÊÂÎñÊýΪ1,ÇÒÖØ¸´Ö´Ðлáÿ´ÎÀÛ¼Ó£¬ÕâÊǺܺÄ×ÊÔ´µÄ¡£
¡¡¡¡
¡¡¡¡Ó¦Îªrollback¸ù±¾¾ÍûÓб»»Ø¹ö¡£
¡¡¡¡
¡¡¡¡2¡¢Ê¹ÓÃÏÖÓÐÊֶνâ¾ö¹ÂÁ¢ÊÂÎñ
¡¡¡¡
¡¡¡¡¡¡¡¡print @@trancount print 'µ±Ç°Á¬½ÓµÄ»î¶¯ÊÂÎñÊý' --µ±Ç°Á¬½ÓµÄ»î¶¯ÊÂÎñÊýΪ0
¡¡¡¡
¡¡¡¡¡¡¡¡if @@trancount<>0 rollback tran --ÔÚÕâÀïд¿ÉÒÔÈùÂÁ¢ÊÂÎñÖ»±£³Öµ½Ï´ÎÄãµÄ¹ý³Ì±»µ÷ÓÃ
¡¡¡¡¡¡¡¡begin tran
¡¡¡¡
¡¡¡¡¡¡¡¡select * from Ò»¸ö²»Ôڵıí
¡¡¡¡¡¡¡¡if @@error<>0
¡¡¡¡¡¡¡¡begin
¡¡¡¡¡¡¡¡¡¡print 'ûÓÐÖ´Ðе½ÕâÀïÀ´!'
¡¡¡¡¡¡¡¡¡¡if @@trancount<>0 rollback tran
¡¡¡¡¡¡¡¡end
¡¡¡¡
¡¡¡¡¡¡¡¡commit tran
¡¡¡¡
¡¡¡¡¡¡¡¡---Ö´ÐкóÄã¿´¿´ µ±Ç°Á¬½ÓµÄ»î¶¯ÊÂÎñÊýΪ1£¬µ«Öظ´Ö´Ðв»»áÀÛ¼Óprint @@trancount print 'µ±Ç°Á¬½ÓµÄ»î¶¯ÊÂÎñÊý'
¡¡¡¡
¡¡¡¡Èý¡¢Ê¹Óà set xact_abort À´¿ØÖƲ¿·ÖÎ¥·´Ô¼ÊøµÄ´íÎóµÄÖ´Ðйý³Ì
¡¡¡¡¡¡create table Table1 (a int check(a>100))
¡¡¡¡¡¡go
¡¡¡¡
¡¡¡¡¡¡set xact_abort on
¡¡¡¡¡¡begin tran
¡¡¡¡¡¡¡¡insert table1 val[wiki]UE[/wiki]s(10)
¡¡¡¡¡¡¡¡print 'ÕâÀïûÓб»Ö´ÐÐ'
¡¡¡¡¡¡commit tran
¡¡¡¡¡¡go
¡¡¡¡¡¡
¡¡¡¡¡¡print '' print '==============================================' print ''
¡¡¡¡¡¡
¡¡¡¡¡¡set xact_abort off
¡¡¡¡¡¡begin tran
¡¡¡¡¡¡¡¡insert table1 values(10)
¡¡¡¡¡¡¡¡print 'ÕâÀï±»Ö´ÐÐ'
¡¡¡¡¡¡commit tran
¡¡¡¡
¡¡¡¡¡¡go
¡¡¡¡¡¡drop table table1
¡¡¡¡
¡¡¡¡µ« set xact_abort ¶ÔÓÚ±àÒë²úÉúµÄ´íÎóȷûÓÐÆð×÷Óã¬ÇÒͬÑù»á²úÉú¹ÂÁ¢ÊÂÎñ
¡¡¡¡
¡¡¡¡¡¡set xact_abort on
¡¡¡¡¡¡begin tran
¡¡¡¡¡¡¡¡insert¡¡Ò»¸ö²»Ôڵıí values(10)
¡¡¡¡¡¡¡¡print 'ÕâÀïûÓб»Ö´ÐÐ'
¡¡¡¡¡¡commit tran
¡¡¡¡¡¡go
¡¡¡¡
¡¡¡¡¡¡print '' print '==============================================' print ''
¡¡¡¡
¡¡¡¡¡¡set xact_abort off
¡¡¡¡¡¡begin tran
¡¡¡¡¡¡¡¡insert¡¡Ò»¸ö²»Ôڵıí values(10)
¡¡¡¡¡¡¡¡print 'ÕâÀïûÓб»Ö´ÐÐ'
¡¡¡¡¡¡commit tran
¡¡¡¡¡¡go
¡¡¡¡
¡¡¡¡¡¡select @@trancount µ±Ç°Á¬½ÓµÄ»î¶¯ÊÂÎñÊý ---ÓÐÁ½¸ö¹ÂÁ¢ÊÂÎñ
¡¡¡¡¡¡if @@trancount<>0 rollback tran
¡¡¡¡
¡¡¡¡¶ÔÓÚsqlÖйֱٵĸ÷ÖÖ´íÎ󣬺͹ÂÁ¢ÊÂÎñÔÚt-sql[wiki]±à³Ì[/wiki]ÖÐÒ»¶¨Òª×¢Ò⣬СÐĹÂÁ¢ÊÂÎñµÄÏÝÚ壬¾¡Á¿±ÜÃâÀË·Ñ»ò¹ÂÁ¢×ÊÔ´£¬Microsoft¹«¿ªÐû²¼¹ýSQLServeÏÂÒ»°æ±¾Yukon½«ÓÐÄÚÖÃÒì³£´¦ÀíÓï·¨¡£ÄÇʱ¿ÉÒÔͨ¹ý´úÂë¶ÔÎÞ·¨Ô¤ÁϵĴíÎóÓиüºÃµÄ¿ØÖÆ¡£