2016-08-31 2 views
0

テーブルからダイナミックフィールドを検証する必要があります。例:Firebird dynamic Var新規および古い

CREATE TRIGGER BU_TPROYECTOS FOR TPROYECTOS 
    BEFORE UPDATE AS 
    DECLARE VARIABLE vCAMPO VARCHAR(64); 
BEGIN 
    /*In then table "TCAMPOS" are the fields to validate*/ 
    for Select CAMPO from TCAMPOS where TABLA = TPROYECTOS and ACTUALIZA = 'V' into :vCAMPO do 
    Begin 
     if (New.:vCAMPO <> Old.:vCampo) then 
     /*How i get dynamic New.Field1, New.Field2 on query return*/ 
    End; 
END ; 

質問:私は上記のコードで「クエリが返すフィールドの名前」をどのように置くことができますか。

すなわちクエリは私にフィールド1とフィールド5を返した場合、私はトリガをかけることになり

if (New.Field1 < > Old.Field1) or (New.Field5 < > Old.Field5) then 
+1

あなたの質問に取り組む必要があります。私はそれが本当に質問であるかどうかは分かりません。あなたがしたいことを説明してください。 –

+0

[良い質問をするにはどうすればいいですか] – buhtz

+0

変数には古い値と新しい値はありません。現在のところ、それらの価値は1つだけです。 "old_vcampo"と "new_vcampo"変数を宣言し、それらの変数で処理することができます。 –

答えて

0

Firebirdの中にはそのような機能はありません。ハードコーディングされたすべてのフィールドを参照するトリガーを作成(およびできれば作成)する必要があります。基になるテーブルが変更されたり、検証の要件がある場合は、追加または削除されたフィールドを考慮に入れてトリガーを再作成する必要があります。

関連する問題