Триггеры в Postgres сработали неожиданно - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть родительская таблица и несколько дочерних таблиц с FK, указывающими на родительскую таблицу.Я удалил запись из родительской таблицы и заметил, что это вызывает триггеры удаления во всех дочерних таблицах, хотя удаляемая родительская запись не имеет дочерних записей в этих дочерних таблицах.

Я нахожу это странным.Но я пришел с SQL Server, поэтому здесь, в Postgres, поведение может быть другим.

Мои триггеры являются триггерами уровня оператора, если это имеет значение.

Может ли кто-нибудь объяснить, пожалуйста, укажите мне некоторые ссылки?

У меня нет никакого кода со мной, чтобы публиковать ... но я думаю, что ситуация будет ясна для некоторых людейс большим опытом работы в Postgres.

1 Ответ

0 голосов
/ 02 декабря 2018

Триггер уровня оператора срабатывает независимо от количества затронутых записей.Таким образом, даже если дочерние записи не существуют, выполняется оператор автоматического удаления (при условии, что ваш FK равен on delete cascade) и запускается триггер.

...