2

私が取り組んでいるソフトウェアの一部は、Oracleのトリガーを使用しています。現在データベースで作成および無効化されているセット全体があります。CREATEまたはREPLACEを実行して既存のトリガーを変更すると、そのトリガーは自動的に有効になります。CREATEが自動的に何かを有効にすることを理解していますが、なぜこれを置き換えるのですか?

また、奇妙なことに、これは1つのデータベースでのみ発生し、他のデータベースは問題ありません。これを引き起こしている可能性がある、またはREPLACEの期待される動作を有効にしているデータベース内の設定はありますか?

4

2 に答える 2

1

この句は、それ自体がコマンドではなくOR REPLACE、コマンドの修飾子と見なされていると思います。CREATEまた、CREATE TRIGGERコマンドは、次のように設計されています。

CREATE TRIGGERステートメントを使用して、データベーストリガーを作成して有効にします[...]トリガー
を作成すると、データベースによって自動的に有効になります。その後、ALTERTRIGGERまたはALTERTABLEステートメントのDISABLEおよびENABLE句を使用して、トリガーを無効および有効にすることができます。

于 2012-12-20T12:37:56.130 に答える
0

トリガーの有効化と無効化は、アプリケーションが実行する「通常の」ことではないため、このソフトウェアに惑わされている可能性があります。一般に、有効な構文を持ち、コンパイルできるコードを作成すると、作成時に有効になります。「作成または置換」は、最初にコード項目を削除せずに変更できるようにするための便利な機能です (そして、特権を削除するなどの望ましくない副作用を引き起こす可能性があります)。コンパイルに関しては create と同じです。

ここでできることは、「トリガーを作成または置換...いつ無効にするか...」であり、もちろん無効として作成されます。

于 2012-12-20T12:37:21.217 に答える