从“分组表”中删除时,级联删除不起作用

时间:2014-10-17 05:07:14

标签: mysql sql

这是我的问题的简要示例:

我创建了2个表,这些表通过“分组表”连接。

CREATE TABLE table1
(
    t1_pk INT(11) AUTO_INCREMENT NOT NULL,
    t1_entry VARCHAR(150),
    PRIMARY KEY (t1_pk)
) engine = innodb;

CREATE TABLE table2
(
    t2_pk int(11) AUTO_INCREMENT NOT NULL,
    t2_entry VARCHAR(150),
    PRIMARY KEY (t2_pk)
) engine = innodb;

CREATE TABLE grouping
(
    grouping_pk INT(11) AUTO_INCREMENT NOT NULL,
    t1_fk INT(11) NOT NULL,
    t2_fk INT(11) NOT NULL,
    PRIMARY KEY (grouping_pk),
    CONSTRAINT table1_fk FOREIGN KEY (t1_fk) REFERENCES table1 (t1_pk) ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT table2_fk FOREIGN KEY (t2_fk) REFERENCES table2 (t2_pk) ON DELETE CASCADE ON UPDATE CASCADE
) engine = innodb;

现在我要删除分组,table1和table2中table1.t1_entry为“abc”的所有条目。

我尝试这样做:

DELETE FROM grouping
WHERE grouping.grouping_pk IN (SELECT
    temp.entry_id
    FROM (SELECT grouping.grouping_pk,
            grouping.t1_fk,
            grouping.t2_fk,
            table1.t1_pk,
            table1.t1_entry,
            table2.t2_pk,
            table2.t2_entry
            FROM grouping
                LEFT OUTER JOIN table1 ON grouping.t1_fk = table1.t1_pk
                LEFT OUTER JOIN table2 ON grouping.t2_fk = table2.t2_pk
            WHERE table1.t1_entry LIKE 'abc'
        ) AS temp)

因此,条目将在分组表中删除,但不会在table1和table2中删除。

我现在的问题是,我如何选择记录并从所有表中删除结果集?我觉得自己像个假人,因为我不能自己解决这个问题。

2 个答案:

答案 0 :(得分:1)

在table2_fk的分组表定义中,引用table1而不是table2。可能是问题......

答案 1 :(得分:1)

现在关闭这个...

结论: 基于Barmar和Spencer 7593评论,我必须重新设计我的数据模型,以便更好地解决我的问题。 非常感谢您的帮助!