検索したのですが、探していたものが見つからなかったので、すでに質問されていたら申し訳ありません...
PHP と MYSQL の組み合わせを使用しています。
「アドレス」テーブルへの外部キーを持つテーブル「メンバー」があります。
メンバー テーブル:
CREATE TABLE __JEH_MEMBER (" .
"id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, " .
"title VARCHAR(". self::TITLE_MAX_STRLEN ."), " .
"forename VARCHAR(". self::NAME_MAX_STRLEN .") NOT NULL, " .
"surname VARCHAR(". self::NAME_MAX_STRLEN .") NOT NULL, " .
"addr_id INT NOT NULL, " .
"bday DATE, " .
"FOREIGN KEY(addr_id) REFERENCES __JEH_ADDRESS(id)" .
// Note: No cascade spec here deliberately for now..
") ENGINE=InnoDB;";
アドレス テーブル:
"CREATE TABLE __JEH_ADDRESS(" .
"id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, " .
"street1 VARCHAR(120) NOT NULL, " .
"street2 VARCHAR(120), " .
"street3 VARCHAR(120), " .
"street4 VARCHAR(120), " .
"city VARCHAR(50) NOT NULL, " .
"state VARCHAR(50) NOT NULL, " .
"country VARCHAR(50) NOT NULL, " .
"postcode VARCHAR(16) NOT NULL" .
") ENGINE=InnoDB;";
ユーザーを削除する場合、他のユーザーがそのアドレスに住んでいない場合にのみアドレスを削除したいと考えています。
それで、私の質問は、データベースがこれを行う方法を知っているカスケード削除の巧妙な逆があるか、それとも両方のテーブルをロックし、状態をチェックし、次にアドレスを削除する場合にのみアドレスを削除するという既存の方法に固執する必要があるかどうかです。誰もそれを参照していませんか?