更新トリガーを作成しています。正確な列名が何であるかを実際に知らずに、テーブル列の条件をテストする必要がある状況があります。トリガーは汎用的で、さまざまな列を持つ任意のテーブルに適用できます。
擬似コード:
// define a cursor that loops through all columns in "MyTable"
Define cursor C1 for (select COLS from SYSCAT.TABLES where TABS="MyTable")
FOR
// take the next column from the cursor
@temp_var = C1.COLS
// DELETED and INSERTED are tables that also contain the same columns as "MyTable" table.
if(DELETED.@temp_var <> INSERTED.@temp_var)
THEN
...
もちろん、上記のステートメントif(DELETED.@temp_var <> ...
は機能しませんが、私が何をしようとしているのかわかるでしょうか? だから私はそれが実行時にあることを望みif(DELETED.MyColumn <>... where "MyColumn"
ます. このメソッドは一般的なものであるため、テーブルに含まれる列が事前にわからないことに注意してください (使用中の特定のテーブルによって異なります)。"MyTable"
INSERTED
DELETED columns
そのように if ステートメントを動的に構築する方法についてのアイデアはありますか?