Как я могу удалить строки, где его внешний ключ равен NULL? - PullRequest
0 голосов
/ 15 марта 2011

У меня есть две таблицы с именами tab1 и tab2.

р1 таб1 rimary key is price и price is foreign key in tab2 и это on delete set null.

Когда я удаляю один из primary key из tab1, который существует в tab2, соответствующий внешний ключ

имеет значение NULL.

Теперь я хочу удалить строку из tab2, где их внешний ключ равен нулю.

Я пишу этот запрос, но он не работает.

delete from tab2 where price = null.

Пожалуйста, помогите мне в ее решении.

Ответы [ 2 ]

5 голосов
/ 15 марта 2011

Вы не можете сравнить NULL, используя =.Вы должны использовать IS NULL вместо

WHERE price IS NULL

Из Справочного руководства MySQL

Значение NULL может быть удивительным, пока вы не привыкнете к нему.Концептуально NULL означает «пропущенное неизвестное значение», и оно трактуется несколько иначе, чем другие значения.Чтобы проверить NULL, вы не можете использовать операторы арифметического сравнения, такие как =, <или <>.

Но если вы уже используете on delete set null, почему бы просто не изменить его на on delete cascade и избавить вас от необходимости удалять строки вручную?

2 голосов
/ 15 марта 2011
delete from tab2 where price is null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...