BEGIN TRANSACTION
DECLARE @dt VARCHAR(50)
SELECT * FROM Class_Info WITH (HOLDLOCK)
/*show time*/
SELECT @dt=CONVERT(VARCHAR,GETDATE(),21)
PRINT 'u1 lock time:'+@dt
WAITFOR DELAY '00:00:15'
SELECT @dt=CONVERT(VARCHAR,GETDATE(),21)
PRINT 'u1 unlock time:'+@dt
COMMIT TRANSACTION
--user 2
BEGIN TRANSACTION
DECLARE @dt2 VARCHAR(50)
SELECT @dt2=CONVERT(VARCHAR,GETDATE(),21)
PRINT 'u2 begin tran:'+@dt2
SELECT * FROM Class_Info
SELECT @dt2=CONVERT(VARCHAR,GETDATE(),21)
PRINT 'u2 begin selct:'+@dt2
DELETE FROM Class_Info WHERE ID=19
SELECT @dt2=CONVERT(VARCHAR,GETDATE(),21)
PRINT 'u2 begin delete:'+@dt2
ROLLBACK TRANSACTION
-----------------------------执行结果---------------------
(20 行受影响)
u1 lock time:2010-08-04 10:59:49.780
u1 unlock time:2010-08-04 11:00:04.777
u2 begin tran:2010-08-04 10:59:51.077
(20 行受影响)
u2 begin selct:2010-08-04 10:59:51.077
19
(1 行受影响)
DELETE
(1 行受影响)
u2 begin delete:2010-08-04 11:00:04.777