データベーステーブルにビジネスルールを適用して、テーブルに特定の条件を満たす行がすでに含まれている場合に行を挿入できないようにしたいとします。SQL Serverの制約のチェック - 他の行のクエリ
CHECK制約を使用したいと思っていましたが、これはトリガーを介して行う必要があると思われます。
CHECK制約によってこれを行う方法はありますか?または、トリガーを使用せずにデータベースレベルでこれを行う別の方法はありますか?
データベーステーブルにビジネスルールを適用して、テーブルに特定の条件を満たす行がすでに含まれている場合に行を挿入できないようにしたいとします。SQL Serverの制約のチェック - 他の行のクエリ
CHECK制約を使用したいと思っていましたが、これはトリガーを介して行う必要があると思われます。
CHECK制約によってこれを行う方法はありますか?または、トリガーを使用せずにデータベースレベルでこれを行う別の方法はありますか?
(あなたがまだ共有されていない)、あなたの特定の条件に応じて、これは、関数や他の回避策よりも、通常は高速であるunique filtered index.
を行うことができるかもしれません。
一般的なフォーマットは次のようになります。
CREATE UNIQUE NONCLUSTERED INDEX ix_IndexName ON MyTable (FieldstoIndex)
WHERE <filter to only include certain rows>
特に**あなたがやろうとしているもの**の例を提供してください。これを宣言的に試してみるのが最善です。 –
あなたがテストしている基準についてもっと具体的にすることはできますか? –
特定の範囲内にid列を持つ既存の行がある場合は、行を挿入したくない – AJM