ユーザーが異なるプロジェクトを持つデータベースがあります。ユーザーは複数のプロジェクトを持つことができますが、プロジェクトは 1 人のユーザーしか持つことができません。
プロジェクトを削除せずにユーザーを削除しようとすると、問題が発生します。最初にプロジェクトを削除しない限り、MySql ではユーザーを削除できません。
ユーザーを削除してプロジェクトを保持する方法はありますか?
ユーザーとプロジェクトを含むテーブル間に外部キー関係がある場合は、プロジェクト テーブルの作成テーブルでこれを使用できます。
FOREIGN KEY (user_id)
REFERENCES users(user_id)
ON DELETE SET NULL,
残念ながら、alter を使用して既存のテーブルでこの変更を行うことはできないため、テーブルを削除して再度作成する必要があります。
外部キー制約を使用してスキーマを設定したため、プロジェクト テーブルの行は所有ユーザーの存在を主張します。
この種の「削除」は通常、ソフト削除によって行われます。特定の行を削除済みとしてマークしたい場合は、テーブルに「非アクティブ」列を追加し、それを「はい」またはゼロ以外に設定します。
これを行うには、外部キー制約を変更する必要があります。これは、外部キーを持つ理由の 1 つであり、それらを壊さないためです。