Iは、他の列の間で、格納するために使用される4つの列を持つテーブルを持っている:Informixでエラーコード-747を解決するには?
行が挿入された- (
created_tm
)行があった場合、行(created_by
) - を挿入した
- 更新(
last_updated
) 行を更新した
- (
updated_by
)
私はPOPUにトリガーを作成しましたlast_updated
後半とupdated_by
更新ステートメントが発生するたびにこの問題を回避する方法はあり
[Code: -747, SQL State: IX000] Table or column matches object
referenced in triggering statement.
:
create trigger my_table_audit update on my_table referencing old as pre new as post
for each row
(
update my_table set last_updated = CURRENT year to second,
updated_by = USER where (id = pre.id)
);
をしかし、私は特定の行の通常の列を更新する場合、更新がで失敗しますトリガーを実行するテーブルの個々の列をすべて明示的に指定する必要はありませんか?
説明とソリューションLuisに感謝します。私は、 'CURRENT、USER'を返す関数を定義し、' function function populate_audit_fields()をmy_table_audit'のように実行する、少し異なるソリューション(DBAが提案)を使用しました。あなたが考えることができるストアドプロシージャと比較して、賛否両論はありますか? – Behrang
@ Behrang Informixでは内部的に扱われるかどうかはわかりませんが、結果は同じようです。ベンチマークをしたいのでなければ、あなたのために働くものを使用してください。 –