加入查询以删除子 class 和父 class 中的记录
Join query to delete a record both in child class and parent class
我需要删除子 table 和父 table 中的一条记录,并引用另一个 column.The 一个 table 的主键等于外键另一个 table.eg.table A.pkid=table B.fkid
如何使用连接查询或级联来删除它。
我尝试了几个查询,但它显示了无效的语法。
delete from
table A table B where pkid=(SELECT fk_id from table B)
where name='SEP' from table B
delete from
table A join table B ON table A.fk_id=(SELECT pk_id FROM table B)
where name='SEP' from table B
delete from
table A join table B ON A.fk_id=B.pk_id
where name='SEP' from table B
能否优化我的查询或给我一个 link 我可以从中获得一些帮助的地方?非常感谢。
看起来你只需要一些简单的东西:
BEGIN WORK;
DELETE FROM A WHERE fk_id IN (SELECT pk_id FROM B WHERE name = 'SEP');
DELETE FROM B WHERE name = 'SEP';
COMMIT WORK;
另一种方法是在具有 ON DELETE CASCADE
选项的架构中 define the PK-FK relationship,子项将在删除父项时自动删除。
我需要删除子 table 和父 table 中的一条记录,并引用另一个 column.The 一个 table 的主键等于外键另一个 table.eg.table A.pkid=table B.fkid
如何使用连接查询或级联来删除它。 我尝试了几个查询,但它显示了无效的语法。
delete from
table A table B where pkid=(SELECT fk_id from table B)
where name='SEP' from table B
delete from
table A join table B ON table A.fk_id=(SELECT pk_id FROM table B)
where name='SEP' from table B
delete from
table A join table B ON A.fk_id=B.pk_id
where name='SEP' from table B
能否优化我的查询或给我一个 link 我可以从中获得一些帮助的地方?非常感谢。
看起来你只需要一些简单的东西:
BEGIN WORK;
DELETE FROM A WHERE fk_id IN (SELECT pk_id FROM B WHERE name = 'SEP');
DELETE FROM B WHERE name = 'SEP';
COMMIT WORK;
另一种方法是在具有 ON DELETE CASCADE
选项的架构中 define the PK-FK relationship,子项将在删除父项时自动删除。