0

SQL Server 2005 でこれを回避する方法はありますか?

(それは私を悩ませます、そして私がそれに遭遇するたびに私はストロップに陥ります.しかし、これは私が対処しなければならず、スタックオーバーフローに参加したのはこれが初めてです.私が持っている小さな正気を保存してください!)

DimensionTable:
id INT IDENTITY(1,1)

FactTable:
source_id INT NOT NULL、
target_id INT NOT NULL

「Fact.source_id」から「Dimension.id」への外部キーを作成し、カスケード削除とカスケード更新で設定しました。

「Fact.target_id」で同じことをしようとすると、カスケードがたどるパスが複数あるため、「ああ、いや、いや」というエラーが表示されました。

ここには他の外部キーは含まれていません。作成したいのは 2 つだけです。カスケードなしで 2 番目の外部キーを作成することはできますが、それは私にはかなりうんざりするようです。これは、手動で維持される一連のテーブルです (それらに触れることはめったにないため、クライアントはこれを行うために GUI に料金を支払う必要はありません)。このようなカスケードの削除/更新は非常に便利ですが、両方のフィールドにある場合。(私は一貫性が苦手です)

****泣き言****

4

2 に答える 2

1

はい、INSTEAD OF トリガーを使用します。DELETE コマンドをインターセプトし、それに応じてロジックを指示できます。

于 2009-04-21T18:12:45.107 に答える
0

カスケード削除は、1 つの関係からのみ行うことができます。これをトリガーで設定することをお勧めします。

于 2009-04-21T18:10:54.657 に答える