2012-04-01 25 views
0

を変更:http://www.postgresql.org/docs/current/interactive/sql-createtrigger.htmlトリガーは... AFTERと前に、特定の列を持つ私は、PostgreSQLのユーザーだと私はこれに従うことをしようとしている

CREATE TRIGGER check_update 
    BEFORE UPDATE ON accounts 
    FOR EACH ROW 
    WHEN (OLD.balance IS DISTINCT FROM NEW.balance) 
    EXECUTE PROCEDURE check_account_update(); 

が、AFTER代わりに、BEFOREと 。そして、私はいつでもいつでもエラーを受けています。 これは私が前に使用しなければならないためですか?列を更新した後にプロシージャを実行する必要があり、実際に変更された場合はどうすればよいですか?

+1

あなたはどのようなエラーを表示していますか、あなたの '作成トリガー 'はどのように見えますか? –

+1

PostgreSQLのどのバージョンを使用していますか? –

+0

私が手: 構文でエラーまたは近くを '' LINE 1:... check_update EACH ROW FORアカウントON UPDATE AFTER(OLD.balanceがNEW.balance区別される)WHEN .... – Noon

答えて

4

のPostgreSQL 8.4はfine manualから、トリガをサポートしていません。

あらすじ

CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] } 
ON table [ FOR [ EACH ] { ROW | STATEMENT } ] 
EXECUTE PROCEDURE funcname (arguments) 

WHENそこにはありません。

if old.balance is not distinct from new.balance then 
    return new; 
end if; 
-- The rest of the trigger... 

を、あるいは少なくともPostgreSQL 9.0にアップグレードし、トリガーを作成するときにするときに使用:あなたはあなたのトリガ関数内WHENロジックを置くことができます。

+0

ありがとう!あなたの助けに感謝 – Noon

関連する問題