我是PostgreSQL的新手。我想模拟以下日程安排的死锁:
如何在PostgreSQL中模拟死锁? 是否有可能? 如何锁定特定列?
BEGIN;
UPDATE deadlock_demonstration
SET salary1=(SELECT salary1
FROM deadlock_demonstration
WHERE worker_id = 1
FOR UPDATE)+100
WHERE worker_id=1;
SELECT pg_sleep(5);
commit;
SELECT salary2 FROM deadlock_demonstration WHERE worker_id = 1 FOR UPDATE;
在另一个屏幕上,我运行了这个:
BEGIN;
UPDATE deadlock_demonstration
SET salary2=(SELECT salary1
FROM deadlock_demonstration
WHERE worker_id = 1
FOR UPDATE)+200
WHERE worker_id=1;
SELECT pg_sleep(5);
commit;
SELECT salary1 FROM deadlock_demonstration WHERE worker_id = 1 FOR UPDATE;
为什么死锁没有发生?你能提出建议吗,我应该改变什么以刺激死锁的发生?