2012-01-24 12 views
4

プライマリキーを含むメインテーブルがあり、このメインテーブルへの外部キーを含む別のテーブルがあるとします。したがって、メインテーブルの行だけを削除すると、子テーブルは削除されません。他のテーブルの外部キーであるプライマリキー行

+2

のようなものを試してみてください - 壊れ参照整合性... –

+2

リサーチ 'DELETE CASCADE' ON。 – Phrogz

+1

StackOverflowは危険ではありません - あなたの質問を質問の形で書き直せますか? – Borealid

答えて

5

あなたはそれは、SQLサーバーによって禁止されているので、あなたは、参照される行を削除することができないでしょう代わりに{CASCADE、SETのNULL、SETのDEFAULT}

をDELETEなどONとして、あなたのFKey上のいくつかの特定のオプションを設定する必要があります誠実さのために。

したがって、参照するテーブルの値をNULLまたは他のDEFAULT値に設定することができます。

またはご参照行は親の行せずに、いくつかの意味を持っている場合は、あまりにも

それともそれを削除する - そして何かがあなたのDB設計と間違っている - あなたは、[F]キーまたはスキーマを必要としないのいずれかであります正規化されていません。

0

私はこれのようなものがほしいと思います。

ON DELETE CASCADE 他の表の既存の行の外部キーによって参照されるキーを持つ行を削除しようとすると、その外部キーを含むすべての行も削除されるように指定します。

REF:http://msdn.microsoft.com/en-us/library/ms186973%28SQL.90%29.aspx

4

あなたは子供のレコードを残した場合、それは孤児だこの

ALTER TABLE MainTable 
ADD CONSTRAINT fk_xyz 
FOREIGN KEY (xyz) 
REFERENCES ChildTable (xyz) ON DELETE CASCADE 
+0

働いていない.. !! 私は主キーの行を削除し、まだ行を保持する外部キーテーブルを見ることができます。 – user3177068

関連する問題