gpt4 book ai didi

mysql - 从 'grouping table' 删除时级联删除不起作用

转载 作者:行者123 更新时间:2023-11-29 07:51:04 25 4
gpt4 key购买 nike

这是我的问题的一个精简示例:

我创建了 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 中的条目未被删除。

我现在的问题是,如何选择记录并从所有表中删除结果集?我感觉自己像个傻瓜,因为我自己无法解决这个问题。

最佳答案

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

关于mysql - 从 'grouping table' 删除时级联删除不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26418233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com