Du behøver ikke nogen eksplicit LOCK
at gå i dødvande. Her er en meget simpel demo fra bunden med kun INDSÆTNINGER:
create table a(i int primary key);
create table b(i int primary key);
Session #1 gør:
begin;
insert into a values(1);
Så gør session #2:
begin;
insert into b values(1);
insert into a values(1);
-- here it goes into waiting for session #1 to finish its transaction
Så gør session #1:
insert into b values(1);
Og så opstår dødvandet:
Det samme kunne ske med simple OPDATERINGER eller en kombination af OPDATERINGER og INDSÆTNINGER. Disse operationer tager implicitte låse, og hvis de sker i forskellige sessioner i forskellige rækkefølger, kan de gå i stå.