我在 HSQL 数据库中有两个具有多对多关系的表(为说明目的而重命名/重构)。当我从多对多关系的一侧删除时,我希望所有内容都被清除(不查询表;这对性能至关重要)
这是我的主要表格:
CREATE TABLE PERSON
(
PERSON_ID INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
NAME VARCHAR(50)
)
CREATE TABLE JOB
(
JOB_ID INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
NAME VARCHAR(50)
)
这是我的联接表:
CREATE TABLE JOB_PERSON
(
PERSON_ID INTEGER,
JOB_ID INTEGER
)
这是我的限制:
ALTER TABLE JOB_PERSON ADD
CONSTRAINT FK_PERSON_JOB FOREIGN KEY(PERSON_ID)
REFERENCES PERSON ON DELETE CASCADE ON UPDATE CASCADE
ALTER TABLE JOB_PERSON ADD
CONSTRAINT FK_JOB_PERSON FOREIGN KEY(JOB_ID)
REFERENCES JOB ON DELETE CASCADE ON UPDATE CASCADE
我基本上想这样做:“从person_id = 0的人中删除”并让它从PERSON、JOB_PERSON和JOB中删除所有内容,如果JOB实体将被孤立(不再在多对多表中引用)
在不查询数据库的情况下这可能吗?当我删除时,它只会从 PERSON 和 JOB_PERSON 中删除。您可能会说,我缺乏 sql 技能。
这是我一直在玩的虚拟数据:
insert into person values(null,'Arthur');
insert into person values(null,'James');
insert into job values(null, 'Programmer')
insert into job values(null, 'Manager')
insert into job_person values(0,0);
insert into job_person values(0,1);
insert into job_person values(1,1);
因此,如果我输入这两个语句:
delete from person where person_id=0
delete from person where person_id=1
我想删除所有 3 个表中的所有内容。可能的?