私のデータベースには、IDが有効であるために特定のIDのリストと一致しなければならないというビジネスルールがあります。このインスタンスでCHECK制約を使用することはできません。有効なIDを見つけるためにサブクエリが必要なため、トリガーを使用する必要があります。簡単に言えばINSTEAD OF/AFTERトリガーとUDFの選択
は、テーブルAの表Aに挿入されるレコードIDフィールド(数値)ために表B又はC.
に存在しなければならない私は、しかし、確認するスカラーUDFを使用することができIDが有効であれば、これは機能の悪用のようなものです。私はこれをデータベースですでに数回やっていますが、うまくいくものの、間違っているように見えます。
トリガに戻って、エラーが異なる段階で検出される以外は、両方の機能が動作するように見えるため、この場合にどのトリガを使用する必要があるのか判断できません。
INSTEAD OFトリガーを使用すると、挿入/更新される前に無効なIDがキャッチされますが、このトリガーのコードは少し複雑に見えます。 (12の変数と長い扱いにくいINSERTステートメントを含む)
AFTERトリガーは同じタスクを実行しますが、行が挿入されて操作がロールバックされた後にエラーが検出されます。
これらのアプローチの3つすべてが機能しているにもかかわらず、これらのアプローチのうちの1つがタスクにとってより適切でなければなりませんか?
トリガーは、一般的に、更新/削除/挿入操作に使用する、そしてあなたは、挿入する前に、有効なIDを確認したいです。 UIDまたはサブクエリを使用してチェックします(例:myidからmyidを選択した場合) begin - ビジネスロジックを end –
これは私がデータベース内で前に行ったことです。それを行う一般的に受け入れられた方法。 – Jake