0

検索したのですが、探していたものが見つからなかったので、すでに質問されていたら申し訳ありません...

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;";

ユーザーを削除する場合、他のユーザーがそのアドレスに住んでいない場合にのみアドレスを削除したいと考えています。

それで、私の質問は、データベースがこれを行う方法を知っているカスケード削除の巧妙な逆があるか、それとも両方のテーブルをロックし、状態をチェックし、次にアドレスを削除する場合にのみアドレスを削除するという既存の方法に固執する必要があるかどうかです。誰もそれを参照していませんか?

4

4 に答える 4

0

ユーザーを削除するだけです。そのアドレスを持つ他のユーザーのユーザー テーブルを検索します。見つからない場合は、アドレスを削除します。

于 2013-05-12T13:58:23.873 に答える