我需要获取连续更改的所有值,并在其他“审计”表上修改后的值。我能否实现这一点,而不必为行中的每个元素写入条件?我知道,从http://www.firebirdfaq.org/faq133/,让你为验证所有条件SQL:Firebird - 获取触发器内的所有修改字段
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变量。
有没有可能做到这一点,而不使用GTTs?
为了创造力+1,但它有效吗? [这个邮件列表线程](http://groups.yahoo.com/neo/groups/firebird-support/conversations/topics/100294)表明①当某个表被删除时,系统表触发器消失,②这种方法在最不习惯的是失败。 – pilcrow