SQL での切り捨てとカスケードの正確な違いを知りたいです。
3 に答える
カスケード参照整合性制約を使用すると、ユーザーが既存の外部キーが指すキーを削除または更新しようとしたときに発生するアクションを定義できます。
一般的に観察される行動
アクションなし:これはデフォルトの動作です。アクションなしは、他のテーブルの既存の行の外部キーによって参照されるキーを使用して行を削除または更新しようとすると、エラーが発生し、DELETEまたはUPDATEがロールバックされることを指定します。
カスケード:他のテーブルの既存の行の外部キーによって参照されるキーを使用して行を削除または更新しようとすると、それらの外部キーを含むすべての行も削除または更新されることを指定します。
NULLの設定:他のテーブルの既存の行の外部キーによって参照されるキーを使用して行を削除または更新しようとした場合、それらの外部キーを含むすべての行がNULLに設定されることを指定します。
デフォルトに設定:他のテーブルの既存の行の外部キーによって参照されるキーを使用して行を削除または更新しようとした場合、それらの外部キーを含むすべての行がデフォルト値に設定されることを指定します。
Truncate :: TRUNCATEは通常、テーブルからすべての行を削除し、DELETEとは異なり、ロールバックすることはできません。
TRUNCATE
基本的に「空」を意味します。たとえば、トイレに行くときに結腸を切り詰めることができます。テーブルを維持したいが、テーブル内のすべてのデータを削除したい場合は、これを使用してください。
TRUNCATE TABLE students
-> STUDENTS テーブル内のすべてのデータを削除します。
これは、たとえばテスト データベースに便利です。
CASCADE
レコードまたはテーブルを削除するときに使用され、基本的には「それに付随するすべてのもの」を意味します。これは使いにくい場合があります。たとえば、PC を削除しても、3 台のモニター、マウス、キーボード、および素晴らしいサウンド システムはそのままです。ただし、PC を CASCADE DELETE すると、PC に接続されているものもすべて失われます。机と椅子だけを残して。
CASCADE DELETE FROM STUDENTS WHERE name = 'John'
-> すべての「ジョン」を「ジョン」に属する他のテーブルのデータとともに、STUDENTS テーブルから削除します。
何かを CASCADE DELETE するときに、何が削除されるかを確認してください。