4

SQL Server ManagementStudio2008を使用しています。

次のコマンドを使用してテーブルを切り捨てようとすると

truncate table MyTable

それは私に言うエラーを与えます

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

私はこのテーブルに外国の鍵があることを知っています。

今私が次のことをするとき

  • テーブルを右クリックして、Edit Top 200 Rows
  • テーブルからのすべてのレコードの権利
  • Delete押すと削除されます。

ここに画像の説明を入力してください

私はこの動作と混同しています。誰かがこれが発生する方法と理由、およびtruncateステートメントを使用して削除する方法を教えてください。

ありがとう

4

1 に答える 1

2

DELETE基本的にとの間に違いがあるためTRUNCATE

それができれば、単純な削除でもそれらのレコードに対して機能します。(それらに参照がない場合、またはON DELETEMyTableを参照した他のテーブルでステートメントが宣言されている場合)

DELETE FROM dbo.MyTable

あなたがそれをするTRUNCATEことはできません。それ以上DELETEです。最初に削除するCONSTRAINT必要があり、それから切り捨てを行うことができます。forign_keyによって参照されるテーブルではTruncateは許可されていません。

たとえば、他の違いとして、TruncateコマンドはIDENTITY列も再挿入しますが、そうではありDELETEません。

これについての良い記事があります:

SQLServerでのTRUNCATEとDELETEの違い

于 2012-09-14T07:23:35.277 に答える