Я хотел бы заставить пользователя указать источник обновления для некоторой таблицы (sometbl),
например. указать 'local' или 'remote' (для col2) - но проверка этого требования должна выполняться на уровне БД, когда оператор UPDATE
выполняется так:
UPDATE sometbl SET col1 = 'abc';
должен выдавать ошибку (исключение), но:
UPDATE sometbl SET col1 = 'abc', col2 = 'remote';
... добьется успеха.
Я пытался создать ПЕРЕД обновлением для этой таблицы, но не смог проверить,
NEW.col2 был явно установлен.
Я использовал условие
IF NEW.col2 IS NULL THEN
RAISE EXCEPTION 'you must specify source of this update (local/remote)'
END IF;
но каждый раз, когда col2 не было указано в обновлении (UPDATE sometbl SET col1 = 'abc')
Я получил текущее значение этого поля в псевдо-переменной NEW.col2 вместо предполагаемого NULL.
Есть ли обходной путь для предотвращения строки UPDATING, когда указанное поле отсутствует в параметре UPDATE?