1. ホーム
  2. sql-server

[解決済み] FOREIGN KEY制約で参照されているため、テーブルを切り捨てることができないのですか?

2022-02-01 05:39:13

質問

MSSQL2005を使用して、最初に子テーブル(FK関係の主キーを持つテーブル)を切り捨てた場合、外部キー制約を持つテーブルを切り捨てることができますか?

私は、次のいずれかを行うことができることを知っています。

  • を使用します。 DELETE をwhere節なしで指定し RESEED 同一性
  • FKを削除し、テーブルを切り詰め、FKを再作成する。

子テーブルを親テーブルより先に切り捨てていれば、上記のオプションのどちらもやらなくても大丈夫だろうと思っていたのですが、このようなエラーが出てしまいます。

テーブル 'TableName' は FOREIGN KEY 制約によって参照されているため、切り捨てることができません。

どうすればいいですか?

正しい。FK制約がかかっているテーブルを切り捨てることはできない。

通常、私の場合はこのような処理をしています。

  1. 制約を解除する
  2. テーブルを切り詰める
  3. 制約を再作成する。

(もちろん、すべてトランザクション内です)。

もちろん、これは の子はすでに切り捨てられています。 そうでない場合は、データがどのようなものかによって、別の方法を取ることにしています。(ここでは説明しきれないほど多くの変数があります)。

元の投稿者は、なぜそうなるのかを判断しました。 この回答 をご覧ください。