在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個表中刪除。可能?