3

もともとSQLServer固有(IDENTITYフィールドを使用)で作成されたアプリケーションを管理しています。したがって、テーブルの主キーを自動インクリメントするために多くのトリガーを定義する必要がありました。

これはOracleの世界ではハッキーな回避策と見なされていると言われていますが、それは「友人の友人」のような方法で私に言われました。シーケンスを直接使用する代わりに、トリガーを使用してシーケンスから主キーをインクリメントすることはどれほど大きな問題ですか?

4

2 に答える 2

10

これは私の経験では非常に一般的な方法であり、ひどく悪い方法ではありません。ただし、挿入を制御できる場合(たとえば、すべての挿入がPL / SQL APIを介して行われる場合)、トリガーを起動するオーバーヘッドを回避するため、INSERTステートメントでシーケンスを直接使用する方が効率的です。しかし、トリガーを使用したことがあれば、私はそれについて過度に心配することはありません!

于 2009-12-05T15:05:22.023 に答える
1

これは完全に関連しているわけではありませんが、「トリガーの挿入前」を使用して主キーを自動インクリメントすることは、特にマージステートメントでは適切なオプションです。シーケンスがマージ挿入セクション内で直接使用されている場合、シーケンスは更新に対しても呼び出されているようです。

于 2009-12-07T15:14:10.980 に答える