行で変更されたすべての値を取得し、他の「監査」テーブルに変更を投稿する必要があります。行から各要素の条件を記述せずに、これを達成できますか? http://www.firebirdfaq.org/faq133/の SQL を知っています。これにより、検証のすべての条件が得られます。
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 変数のサイズを動的に増やすことができないため、テキスト BLOB に挿入する前に、すべての値を大きな varchar 変数にキャストして連結することを考えていました。
GTTを使用せずにこれを達成する可能性はありますか?