У меня есть две таблицы (переименованные/рефакторированные для иллюстративных целей) с отношением Many-To-Many в базе данных HSQL. Я хочу, чтобы все было уничтожено при удалении от одной стороны многие-ко-многим (без запроса к таблице, это производительность критично)Каскадная помощь 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
Я в основном в 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 таблицы удалены , Возможное?