Есть ли не-триггерный способ каскадирования столбцов, допускающих обнуление, к ссылкам на таблицы? - PullRequest
0 голосов
/ 28 апреля 2020

Внешние ограничения игнорируются для строк, где части внешнего ключа равны null. Это также означает, что изменения, внесенные в столбец, допускающий значение NULL, не распространяются на дочерние таблицы.

Сравнить https://dbfiddle.uk/?rdbms=postgres_9.6&fiddle=e666862f83177715b45eb04f0b0221e1

Существует ли какой-либо не запускающий способ настройки распространение обнуляемых столбцов?

1 Ответ

2 голосов
/ 28 апреля 2020

Я не вижу проблемы здесь. Внешний ключ со значением NULL не имеет отношения к родительской таблице. Таким образом, watcher_3 связан через foo_w__foo_id_foo_prop__fk, но не foo_w__foo_id_foo_prop_foo_target.

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

Единственный способ сделать то, что вы хотите, это ввести «поддельное» значение NULL, как в этом примере.

Тем не менее, ваш пример напоминает мне, почему я избегать каскадных ограничений.

...