1、例:begin tran insert 表 TABLOCKX --加锁 (字段列表) values(值列表) commit tran其他锁的示例 --设tb(A,B,C) create table tb(A varchar(2),B varchar(2),C varchar(2)) insert into tb select 'a1','b1','c1' union all select 'a2','b2','c2' union all s
2、elect 'a3','b3','c3' --1)排它锁 --在第一个连接中执行以下语句 begin tran update tb set A='aa' where B='b2' waitfor delay '00:00:30' --等待3秒 commit tran --在第二个连接中执行以下语句 begin tran select * from tb where B='b2' c
3、ommit tran --若同时执行上述两个语句,则select查询必须等待update执行完毕才能执行即要等待30秒 --2)共享锁 --在第一个连接中执行以下语句 begin tran select * from tb holdlock --holdlock人为加锁 where B='b2' waitfor delay '00:00:3' --等待3秒 commit tran --在第二个连接中执行以下语句 begin tran
4、 select A,C from tb where B='b2' update tb set A='aa' where B='b2' commit tran --若同时执行上述两个语句,则第二个连接中的select查询可以执行 --而update必须等待第一个连接中的共享锁结束后才能执行 即要等待3秒 --3)死锁 --增设tb2(D,E) create table tb2(D varchar(2),E varch
5、ar(2)) insert into tb2 select 'd1','e1' union all select 'd2','e2' --在第一个连接中执行以下语句 begin tran update tb set A='aa' where B='b2' waitfor delay '00:00:5' update tb2 set D='d5' where E='e1' com
6、mit tran --在第二个连接中执行以下语句 begin tran update tb2 set D='d5' where E='e1' waitfor delay '00:00:3' update tb set A='aa' where B='b2' commit tran --同时执行,系统会检测出死锁,并中止进程 /*----------------
7、--------------------------------------------- SET IMPLICIT_TRANSACTIONS ON --用户每次必须显式提交或回滚。否则当用户断开连接时, --事务及其所包含的所有数据更改将回滚 SET IMPLICIT_TRANSACTIONS OFF --自动提交模式。在自动提交模式下,如果各个语句成功