有没有人知道如何使用存储过程插入或更新值来模拟死锁?我只能使用单独的命令在sybase中这样做。
谢谢, 版本
答案 0 :(得分:3)
创建两个存储过程。
第一个应该启动一个事务,修改表1(并花很长时间),然后修改表2。
第二个应该启动一个事务,修改表2(并花很长时间),然后修改表1。
理想情况下,修改应该影响相同的行,或者创建表锁。
然后,在客户端应用程序中,启动SP1,然后立即启动SP2(在SP1完成之前)。
答案 1 :(得分:0)
启动一个过程,使用带循环的while循环连续插入或更新表,然后运行所需的应用程序>
答案 2 :(得分:0)
获得死锁的简单和简单的答案是以相反的顺序访问表数据,从而在两个连接之间引入循环死锁。让我告诉你代码:
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
这将导致死锁。您可以从分析器中看到死锁图。