У меня есть следующая схема таблицы и значения
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 ??
как избежать этого конфликта блокировки