Я новичок в 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;
Почему тупик не происходит? Можете ли вы дать предложение, что я должен изменить, чтобы стимулировать взаимоблокировку?