もともとSQLServer固有(IDENTITYフィールドを使用)で作成されたアプリケーションを管理しています。したがって、テーブルの主キーを自動インクリメントするために多くのトリガーを定義する必要がありました。
これはOracleの世界ではハッキーな回避策と見なされていると言われていますが、それは「友人の友人」のような方法で私に言われました。シーケンスを直接使用する代わりに、トリガーを使用してシーケンスから主キーをインクリメントすることはどれほど大きな問題ですか?
もともとSQLServer固有(IDENTITYフィールドを使用)で作成されたアプリケーションを管理しています。したがって、テーブルの主キーを自動インクリメントするために多くのトリガーを定義する必要がありました。
これはOracleの世界ではハッキーな回避策と見なされていると言われていますが、それは「友人の友人」のような方法で私に言われました。シーケンスを直接使用する代わりに、トリガーを使用してシーケンスから主キーをインクリメントすることはどれほど大きな問題ですか?
これは私の経験では非常に一般的な方法であり、ひどく悪い方法ではありません。ただし、挿入を制御できる場合(たとえば、すべての挿入がPL / SQL APIを介して行われる場合)、トリガーを起動するオーバーヘッドを回避するため、INSERTステートメントでシーケンスを直接使用する方が効率的です。しかし、トリガーを使用したことがあれば、私はそれについて過度に心配することはありません!
これは完全に関連しているわけではありませんが、「トリガーの挿入前」を使用して主キーを自動インクリメントすることは、特にマージステートメントでは適切なオプションです。シーケンスがマージ挿入セクション内で直接使用されている場合、シーケンスは更新に対しても呼び出されているようです。