2016-03-10 9 views
18

ポストグルテーブルのトリガを「作成または置き換えたい」とします。ただし、そのようなSQL式はありません。トリガポストグルの作成または置き換え

私は "DROP TRIGGER IF EXISTS"を最初に(http://www.postgresql.org/docs/9.5/static/sql-droptrigger.html)行うことができます。

私の質問は以下のとおりです。

  1. (DROP +トリガーのCREATE)より推奨/良いオプションがあり、「トリガーを作成したり、交換してください」など存在しない理由はあります(暗示する可能性があります

オラクル(https://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm)に「作成または置換トリガー」があることに注意してください。次に、

  1. このようなコマンドはPostgres用に計画されていますか?

答えて

7

Postresは、トランザクションDDLを持っているので、BEGIN > DROP > CREATE > COMMIT is the equivalent ofはCREATE OR REPLACE`

https://wiki.postgresql.org/wiki/Transactional_DDL_in_PostgreSQL:_A_Competitive_Analysis postgreのトランザクションDDLは、(Oracleなど)他のシステム

現在のpostgresのトリガーに関する計画の特徴と比較する方法のすてきな過去記事(ありますhttps://wiki.postgresql.org/wiki/Todo#Triggers)には、REPLACEの構文を追加することは含まれません。

+4

なぜpostgreqlは 'CREATE OR REPLACE FUNCTION'を許可しますが、' CREATE OR REPLACE TRIGGER'を許可しないのですか?そのコンセプトに従うならば、それはあまりにも正しい機能のために強制されているはずですか?または私は間違っていますか? –

18

トリガーを作成または置換する方法はありませんが、この方法で行うことができます。

DROP TRIGGER IF EXISTS yourtrigger_name on "yourschemaname"."yourtablename"; 
+0

nice、ありがとう – Hartmut

関連する問題