在HSQL数据库中,我有两个表(重新命名/重构用于说明目的)与HSL数据库中的多对多关系。我想被消灭了一切,当我从一个多到多关系一方删除(不包括查询表,这是性能的关键)SQL删除级联帮助(特定问题)
这里是我的主表:
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
我基本上WA nt执行此操作:“删除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个表中删除。可能?