Мне нужно получить все значения, которые изменились в строке и опубликовать изменения в другой таблице аудита. Могу ли я выполнить это, не записывая условия для каждого элемента из строки? Я знаю SQL из http://www.firebirdfaq.org/faq133/, который дает вам все условия для проверок:
select 'if (new.' || rdb$field_name || ' is null and old.' ||
rdb$field_name || ' is not null or new.' || rdb$field_name ||
'is not null and old.' || rdb$field_name || ' is null or new.' ||
rdb$field_name || ' <> old.' || rdb$field_name || ') then'
from rdb$relation_fields
where rdb$relation_name = 'EMPLOYEE';
но это должно быть записано в триггере. Итак, если я меняю таблицу, мне нужно изменить триггер.
Из-за того, что FireBird не позволяет динамически увеличивать размер переменной varchar, я думал о кастинге и конкатенации всех значений в большую переменную varchar, прежде чем вставлять ее в текстовый блок.
Есть ли возможность выполнить это, не используя GTTs?