2009-06-15 26 views
6

現在データベース設計では、2つのエンティティ間に循環参照があります。言い換えれば、私たちは各テーブルに互いに主キーを参照する外部キーを持っています。これらのテーブルにレコードを挿入するには、遅延制約チェックを実行する必要があります。これはSQL Server 2008で可能ですか?私はOracle DDLがこれに特別な構文を持っていることを知っています。遅延制約チェック

答えて

7

SQL Serverで遅延制約チェックを実行するネイティブな方法はありません。

2番目のレコードが挿入されるまでNULL値を最初のテーブルの外部キー列に挿入し、同じトランザクションの一部として最初のテーブルの外部キー列を更新することをお勧めします。

私は興味があります - 循環参照のビジネス上の理由は何ですか?それは間違いなく特別な要件です。

同じトピックでthis threadもご覧ください。

+1

@Aaron。同じ製品のsynonim間に再帰的な参照があります。 –

+0

@Igor:あなたが望むのは、製品情報と製品名の間に1対多の関係を持つ別のテーブルに製品名を格納することです。 Deferred Constaints Checkingは、一意のキー(* "Ordering" *列など)をスワップまたは並べ替えたい場合に非常に役立ちます –