Ну расскажи тогда как проверять энтот ключ при удалении мастер-записи

А такой строкий синтаксис:

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>

Ответить