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はありません。