Sql 使用存储过程模拟死锁
有人知道如何使用存储过程插入或更新值来模拟死锁吗?我只能在sybase中使用单个命令来执行此操作 谢谢,Sql 使用存储过程模拟死锁,sql,stored-procedures,deadlock,sybase,Sql,Stored Procedures,Deadlock,Sybase,有人知道如何使用存储过程插入或更新值来模拟死锁吗?我只能在sybase中使用单个命令来执行此操作 谢谢, Ver创建两个存储过程 首先应该启动一个事务,修改表1(需要很长时间),然后修改表2 第二个应该启动一个事务,修改表2(需要很长时间),然后修改表1 理想情况下,修改应该影响相同的行,或者创建表锁 然后,在客户端应用程序中,启动SP1,然后立即启动SP2(在SP1完成之前).启动一个进程,使用while loop with script不断插入或更新表,并运行所需的sp。获得死锁的简单而
Ver创建两个存储过程 首先应该启动一个事务,修改表1(需要很长时间),然后修改表2 第二个应该启动一个事务,修改表2(需要很长时间),然后修改表1
理想情况下,修改应该影响相同的行,或者创建表锁
然后,在客户端应用程序中,启动SP1,然后立即启动SP2(在SP1完成之前).启动一个进程,使用while loop with script不断插入或更新表,并运行所需的sp。获得死锁的简单而简短的答案是以相反的顺序访问表数据,从而在两个连接之间引入循环死锁。让我向您展示代码:
Create table vin_deadlock (id int, Name Varchar(30))
GO
Insert into vin_deadlock values (1, 'Vinod')
Insert into vin_deadlock values (2, 'Kumar')
Insert into vin_deadlock values (3, 'Saravana')
Insert into vin_deadlock values (4, 'Srinivas')
Insert into vin_deadlock values (5, 'Sampath')
Insert into vin_deadlock values (6, 'Manoj')
GO
现在桌子准备好了。只需从以下两个连接按相反顺序更新列:
-- Connection 1
Begin Tran
Update vin_deadlock
SET Name = 'Manoj'
Where id = 6
WAITFOR DELAY '00:00:10'
Update vin_deadlock
SET Name = 'Vinod'
Where id = 1
and from connection 2
-- Connection 2
Begin Tran
Update vin_deadlock
SET Name = 'Vinod'
Where id = 1
WAITFOR DELAY '00:00:10'
Update vin_deadlock
SET Name = 'Manoj'
Where id = 6
这将导致僵局。您可以从探查器中看到死锁图