Sql 使用存储过程模拟死锁

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。获得死锁的简单而

有人知道如何使用存储过程插入或更新值来模拟死锁吗?我只能在sybase中使用单个命令来执行此操作

谢谢,
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
这将导致僵局。您可以从探查器中看到死锁图