Требуется внешний ключ в таблице questions
(соответственно: answers
), который ссылается на таблицу users
и удаляет все вопросы (или ответы) пользователя, когда он удаляется из users
Таблица.
Это должно работать в соответствии с дизайном:
alter table answers add constraint answers_users
foreign key(user_id)
references users(user_id)
on delete cascade
;
alter table questions add constraint questions_users
foreign key(user_id)
references users(user_id)
on delete cascade
;
Рассмотрим это демо :
-- create the tables
create table users (user_id int primary key);
create table questions(question_id int primary key, user_id int);
create table answers(answer_id int primary key, user_id int);
-- add the constraints
alter table answers add constraint answers_users
foreign key(user_id)
references users(user_id)
on delete cascade
;
alter table questions add constraint questions_users
foreign key(user_id)
references users(user_id)
on delete cascade
;
-- insert a few records - we have two users: 1 and 2
insert into users values (1), (2);
insert into questions values(1, 1), (2, 2);
insert into answers values(1, 1), (2, 2);
-- now delete user 1
delete from users where user_id = 1;
-- the corresponding record was removed from "questions"
select * from questions;
question_id | user_id
----------: | ------:
2 | 2
-- ... and it was removed from "answers" as well
select * from answers;
answer_id | user_id
--------: | ------:
2 | 2