sql >> データベース >  >> RDS >> Sqlserver

2つのテーブルのうち1つだけがベーステーブルを参照できるようにする制約

    UDFを使用したCHECK制約(Odedの回答)は、拡張性が低く、同時実行性が低くなります。これらを参照してください:

    • CHECK制約でラップされたスカラーUDFは非常に遅く、複数行の更新で失敗する可能性があります
    • トニーロジャーソン

    だから:

    • TableA2XYなどの新しいテーブルを作成します
    • これには、TableAのPKと、ony XまたはYを許可するためのCHECKを含むchar(1)列があります。また、AのPKにも一意の制約があります。
    • tableXとtableYには、それぞれXまたはYのみを許可するチェックが付いた新しいchar(1)列があります
    • tableXとtableYは、両方の列にFKからTableA2XYがあります

    これはスーパーキーまたはサブタイプのアプローチです

    • すべてのDRIベース
    • トリガーなし
    • CHECK制約でテーブルにアクセスできるudfsはありません。


    1. OracleSQLでの日付の比較

    2. 文字列演算子「+」はとても単純ですか?

    3. MySQL-列を行にピボット解除する方法は?

    4. 週番号を使用してMySqlで週の最初の日を取得する