행에 변경된 값을 가져와 다른 '감사'테이블에 수정 사항을 게시해야합니다. 행에서 각 요소에 대한 조건을 작성하지 않고도이 작업을 수행 할 수 있습니까? 나는 당신에게 검증을위한 모든 조건을 제공 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을 사용하지 않고이 작업을 수행 할 수 있습니까?
http://www.upscene.com/products.audit.iblm_main.php
그렇지 않으면 당신은 new./old에 액세스 할 수 없습니다 :
창의력 +1 ...하지만 작동합니까? [이 메일 링리스트 스레드] (http://groups.yahoo.com/neo/groups/firebird-support/conversations/topics/100294)는 어떤 테이블이 DROPped 될 때 시스템 테이블 트리거가 사라지고, 적어도 충돌하는 데 사용되었습니다. – pilcrow