У меня есть следующий пример кода:
create table #tempmembers (
memberid int
)
update Members set
Member_EMail = NULL
where Member_ID in (select member_id from #tempmembers)
Подвыбор содержит ошибку, поскольку #tempmembes
не содержит столбец с именем member_id
, но операторы sql запускаются БЕЗ любых ошибок и не обновляют строки.
Если я добавлю только одну строку к #tempmembers
:
create table #tempmembers (
memberid int
)
insert into #tempmembers select 1
update Members set
Member_EMail = NULL
where Member_ID in (select member_id from #tempmembers)
он по-прежнему работает без ошибок, но на этот раз это повлияет на ВСЕ записи членов.
Почему оператор SQL не завершается неудачей полностью? И если неудачный подвыбор оценивается как NULL - обновление всех строк в Members
должно происходить не только в том случае, если это было:
update Members set
Member_EMail = NULL
where Member_ID not in (select member_id from #tempmembers)