У меня есть функция триггера для испытания таблицы, которая имеет следующий фрагмент кода -PostgreSQL: Можно ли динамически петли через колонку за столом в
IF TG_OP='UPDATE' THEN
IF OLD.locked > 0 AND
( OLD.org_id <> NEW.org_id OR
OLD.document_code <> NEW.document_code OR
-- Other columns
..........................
)
THEN
RAISE EXCEPTION 'Message';
/* Rest of the codes */
.................................
Поэтому я статически проверки все новое значение столбца с его предыдущее значение для обеспечения целостности. Теперь каждый раз, когда меняется моя бизнес-логика, и я должен добавлять новые столбцы в эту таблицу, мне придется каждый раз изменять этот триггер. Я подумал, что было бы лучше, если бы я мог динамически проверять все столбцы этой таблицы, явно не набрав их имя.
Как это сделать?
Да. Если все, что вы делаете, проверяет, изменились ли значения столбцов, и вам не нужно знать конкретные столбцы (столбцы), которые были изменены, второй фрагмент Стивена - это, безусловно, путь. Краткий и никогда не нуждается в техническом обслуживании! –
Архангел может сочтет полезным объединить этот тест со знанием того, был ли «заблокирован» 0 «и изменен ли« заблокирован ». Кроме того, 'IS DISTINCT FROM' имеет дело с нулями менее удивительным образом, чем' <> ' –