Ну расскажи тогда как проверять энтот ключ при удалении мастер-записи
А такой строкий синтаксис:
ALTER TABLE <detail table>
ADD CONSTRAINT <constraint name>
FOREIGN KEY (<fk field name>)
REFERENCES
COMPUTED BY <expression>
WHEN <not distinct value 1> THEN
<parent table 1> (<parent field 1>) ON DELETE NO ACTION ON UPDATE
NO ACTION
WHEN <not distinct value 2> THEN
<parent table 2> (<parent field 2> ON DELETE NO ACTION ON UPDATE NO
ACTION;
По выражению создаётся написанный тобой индекс по выражениям, а для WHEN
или только литералы нужно позволять, или тоже индексы создавать - это
тебе лучше видно.
Тут к стати у меня ещё возникла идея. Я уже Адриано склонил на переделку
метода проверки условий в UPDATE OR INSERT INTO.
Вспомни синтаксис CASE такой:
CASE <переменная> WHEN <значение>
Синтаксис то этот более компактный и понятный, но здесь значение NULL
осталось не у дел.
Может тут тоже надо не на равенство проверять, а на IS NOT DISTINCT
FROM? И тогда можно будет писать:
... CASE NEW.FIELD WHEN NULL THEN ...
Будет удобно. Клянусь что у меня из-за NULL половина кейсов написана
через синтаксис CASE WHEN <boolean expression>