HSQLデータベースに多対多の関係を持つ2つのテーブル(説明のために名前を変更/リファクタリング)があります。多対多の関係の片側から削除するときにすべてを消去したい (テーブルをクエリせずに、これはパフォーマンスが重要です)
ここに私の主なテーブルがあります:
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の人から削除」し、JOBエンティティが孤立する場合はPERSON、JOB_PERSON、および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 つのテーブルすべてをすべて削除したいと考えています。可能?