SQl Удалить из более чем одной таблицы - PullRequest
1 голос
/ 11 апреля 2009

Скажем, у меня есть две таблицы Courses и faculty_courses - у каждой есть первичный ключ course_ID, который является varchar (50), а не нулевым.

Я пытаюсь удалить строку из таблицы Courses - поэтому предположим, что необходимо удалить эту строку из обеих таблиц, поскольку они связаны отношением.

Я написал это - не работает - говорит Неверный синтаксис рядом с ключевым словом «JOIN»

DELETE ОТ курсов ПРИСОЕДИНЯЙТЕСЬ к faculty_courses ON Courses.course_ID = faculty_courses.course_ID ГДЕ faculty_courses.course_ID = 'ITM731'

Есть идеи?

Ответы [ 5 ]

6 голосов
/ 11 апреля 2009

Вы должны сделать два заявления.

DELETE Courses where course_ID = 'ITM731'
DELETE faculty_courses WHERE course_ID = 'ITM731'

Или, как уже упоминалось, используйте каскад удаления.

2 голосов
/ 11 апреля 2009

Вы можете создать ссылку FK с помощью CASCADE Delete

Редактировать

Я рекомендую вам использовать подход из Ocedecio для явного удаления из двух таблиц, а не каскадирования. Это делает ваше намерение намного яснее.

2 голосов
/ 11 апреля 2009

То, что вы хотите, может быть обработано с помощью ON DELETE CASCADE ссылок между таблицами При условии, что ваша РСУБД допускает это.

0 голосов
/ 05 ноября 2009
alter table tablename drop column columnname
0 голосов
/ 11 апреля 2009

DELETE только удалить запись из одной таблицы - синтаксис JOIN полезен только для выбора правильных строк в этой таблице, например, в таблице с отношением 1: n (не то, что у вас есть здесь), и вы хотите удалите все записи из таблицы «n», которые относятся к выбираемой записи в таблице «1», тогда вы сделаете DELETE FROM ntable INNER JOIN reftable ON ntable.ref = reftable.ref WHERE reftable.column = 'whatyouneedtolookup'.

Теперь, как я уже сказал, это не относится к вашей текущей ситуации, в которой вам просто нужно выполнить два DELETE оператора - по одному для каждой таблицы на один и тот же ключ.

При этом, похоже, у вас есть ссылка 1: 1 между таблицей, что кажется мне странным - обычно с таким типом ссылки тривиальная нормализация будет состоять в объединении таблиц в одну таблицу со столбцами из обе таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...