0

トリガーを自動的に返す関数には、各行に指定された更新前のトリガーのNEWおよびOLD疑似行を参照する機能がありますか?

 CREATE TRIGGER foo_trigger BEFORE UPDATE ON emp
    FOR EACH ROW EXECUTE PROCEDURE foo();

   CREATE FUNCTION foo() RETURNS trigger AS $foo_trigger$
    BEGIN  
        NEW.taxrate := 5.5;        
        RETURN NEW;
    END;
    $foo_trigger$ LANGUAGE plpgsql;

$....$また、関数の最終行にある文字列$foo_trigger$ LANGUAGE plpgsql;は、CREATE TRIGGERステートメントのトリガーの名前と正確に一致する必要がありますか、それとも単なるプレースホルダーですか?

4

1 に答える 1

3

各行に指定された更新前のトリガーで、NEWおよびOLDの疑似行を自動的に参照する機能があります

はい。

マニュアルからの引用http://www.postgresql.org/docs/current/static/plpgsql-trigger.html

PL / pgSQL関数がトリガーとして呼び出されると、いくつかの特別な変数が最上位ブロックに自動的に作成されます。


文字列[...]は、CREATE TRIGGERステートメントのトリガーの名前と完全に一致する必要がありますか、それとも単なるプレースホルダーですか。

いいえ。

これ$..$は「ドル引用符」と呼ばれ、一重引用符を単純に置き換えることで、大きな文字列(引用符が埋め込まれている)の処理を容易にします。唯一の要件は、最初と最後に同じ「キー」を使用することです。$body$(非常に一般的です)または好きなものを使用できます。

詳細については、マニュアルを参照してください:http ://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING

于 2013-01-23T23:28:34.573 に答える