我的表用户,公司和办公室有以下关系:
company --> user
office --> user
office --> company
更口头上:公司和办公室是用户。公司可能有办事处。
问题:如何实现以下目标:
最后一点是有问题的,因为它会导致循环:删除用户(公司) - >删除公司 - >删除办公室(可以是多个) - >删除用户(办公室)。在用户表上有一个on delete触发器,导致从用户表中删除更多行。有解决方案吗谢谢!
编辑:这是我的(简化)架构:
CREATE TABLE user (
user_id int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (user_id);
CREATE TABLE company (
company_id int(11) NOT NULL AUTO_INCREMENT,
fk_company_user int(11) NOT NULL,
PRIMARY KEY (company_id),
CONSTRAINT fk_company_user FOREIGN KEY (fk_company_user) REFERENCES
user (user_id) ON DELETE CASCADE ON UPDATE CASCADE;
CREATE TABLE office (
office_id int(11) NOT NULL AUTO_INCREMENT,
fk_office_user int(11) NOT NULL,
fk_office_company int(11) NOT NULL,
PRIMARY KEY (office_id),
CONSTRAINT fk_office_company FOREIGN KEY (fk_office_company) REFERENCES
company (company_id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_office_user` FOREIGN KEY (fk_office_user) REFERENCES
user (user_id) ON DELETE CASCADE ON UPDATE CASCADE;