Работает postgresql 11.2
У меня есть 3 таблицы, Table1, Table2 и Table3.
Table2 и Table3 связаны с Table1.
Итак, оба у меня есть внешний ключ и поле для этого:
"fk38dc51d86836z0e5" FOREIGN KEY (table1_id) REFERENCES table1(id)
Недавно я получил взаимоблокировку этих двух таблиц, несмотря на то, что в связанных запросах не используется поле внешнего ключа.
Process 19819 waits for ShareLock on transaction 254244062; blocked by process 19930.
Process 19930 waits for ShareLock on transaction 254244063; blocked by process 19819.
Process 19819: update Table1 set lastUpdated=$1, user_id=$2 where id=$3
Process 19930: update Table2 set lastUpdated=$1, version=$2, content=$3, extra=$4 where id=$5 and version=$6
единственной связью между этими двумя таблицами является их связь с таблицей1. Они не связаны напрямую друг с другом.
Но ни один из запросов не использует внешний ключ для Table1 как часть своего запроса.
Что здесь происходит? Почему вообще тупик?