2013-09-10 3 views
0

У меня есть две таблицы под названием «Пациент и учетная запись». У пациента есть PatientID, так как это PrimaryKey. У учетной записи есть учетная запись, так как PK и PatientID являются иностранным ключом, а также обработкой в ​​качестве кортежа.Удаление данных из двух связанных таблиц

Я хочу, чтобы удалить все пациенты, которые не имели счета с 2005 года это то, что у меня есть:

DELETE FROM PATIENT 
WHERE PATIENTID IN (
    select account.PatientID 
    from ACCOUNT 
    where Treatmentdate < '01-JAN-2005'); 
DELETE FROM ACCOUNT 
WHERE PATIENTID IN (
    select account.PatientID 
    from ACCOUNT 
    where Treatmentdate < '01-JAN-2005'); 

есть ли другой способ, в котором я могу это сделать?

+0

нашел [вопрос] (http://stackoverflow.com/questions/485581/generate-delete-statement-from-foreign- key-relationship-in-sql-2008/2677145 # 2677145) – Wietze314

ответ

1

Я предпочел бы использовать опцию

ON DELETE CASCADE 

внешнего ключа PatientID таблицы СЧЕТА.

В этом случае вам не понадобится второй запрос.

Смотрите ссылки (есть много информации в сети): SQL ON DELETE CASCADE, Which Way Does the Deletion Occur?

+0

спасибо. это работает – Pindo

Смежные вопросы