我已经进行了搜索,但没有找到我想要的东西,如果已经有人问过这个问题,我深表歉意......
我正在使用 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;";
如果我删除一个用户,我只想在没有其他用户也居住在该地址的情况下删除该地址。
所以,我的问题是,是否有一些级联删除的巧妙反转,数据库知道如何执行此操作,或者我是否需要坚持我现有的锁定两个表的方法,检查条件,然后只删除地址,如果没有其他人引用它?