Postgres удаление заблокированных блокировкой на другой таблице с внешним ключом - PullRequest
0 голосов
/ 07 марта 2020

У меня есть следующая схема таблицы и значения

TableA
+++++++++++++++.
PK FieldA1 |
++++ +++++++++++++.
R1.

TableB.
++++++++++++.
- PK FieldB1 | (Таблица FK: Поле A1, каскад удаления) Поле A1
++++++++++++++++++++++++++++++++++++ ++++++++
R2 | R1

У меня есть несколько длительных запросов, которые блокируют строку (R1) в таблице A .. "select * from tableA, где FieldA1 = R1 FOR NO KEY UPDATE"

, но когда я пытаюсь чтобы удалить строку (R2) в таблице B, которая ссылается на R1, я получаю тайм-аут ошибки в ожидании блокировки «ОШИБКА: отмена оператора из-за тайм-аута блокировки» ...

Поскольку в строке R2 нет блокировки таблица B, я не ожидаю, что мое удаление превысит время ожидания.

может кто-нибудь объяснить, почему блокировка на R1 блокирует мое удаление на R2 ??
как избежать этого конфликта блокировки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...