powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не работает IF в связке с UPDATE.
8 сообщений из 8, страница 1 из 1
Не работает IF в связке с UPDATE.
    #39815422
Kirill_l.s.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Столкнулся со следующей проблемой:
Пытаюсь поставить условие IF на срабатывание UPDATE, но получается, что в первую очередь, пред запуском IF, проверяется синтаксис UPDATE и найдя несоответствие выдаёт ошибку. В своём предположении причины могу ошибаться.

Сам запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
IF 
(SELECT COUNT(*)
 FROM SysColumns sc INNER JOIN SysObjects so ON sc.id = so.id
 WHERE so.name = 'sc_anketa' AND sc.name = 'id_photo'
) > 0

UPDATE sc_photo
SET id_anketa = a.id 
FROM sc_anketa a INNER JOIN sc_photo p ON a.id_photo = p.id




Из запроса хотел получить, если столбец "sc_anketa.id_photo" отсутствует, то и UPDATE не срабатывает, но UPDATE всё равно выдаёт ошибку по отсутствующему столбцу. Такая проблема возникает именно с UPDATE, с другими элементами запроса IF работает как надо.
Обойти ошибку удалось поместив UPDATE в процедуру:
exec sp_Executesql N'UPDATE sc_photo
SET id_anketa = a.id
FROM sc_anketa a INNER JOIN sc_photo p ON a.id_photo = p.id'

Но всё же остался вопрос, в чём же дело, почему условие IF в данном случае не работает как надо? Подскажите пожалуйста!
...
Рейтинг: 0 / 0
Не работает IF в связке с UPDATE.
    #39815424
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
IF 
(SELECT COUNT(*)
 FROM SysColumns sc INNER JOIN SysObjects so ON sc.id = so.id
 WHERE so.name = 'sc_anketa' AND sc.name = 'id_photo'
) > 0

exec ( 'UPDATE sc_photo
SET id_anketa = a.id 
FROM sc_anketa a INNER JOIN sc_photo p ON a.id_photo = p.id' )
...
Рейтинг: 0 / 0
Не работает IF в связке с UPDATE.
    #39815426
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Не работает IF в связке с UPDATE.
    #39815428
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill_l.s.Но всё же остался вопрос, в чём же дело, почему условие IF в данном случае не работает как надо? Подскажите пожалуйста!Потому что существование полей для существующих таблиц проверятся на этапе компиляции и до if дело даже не доходит.
...
Рейтинг: 0 / 0
Не работает IF в связке с UPDATE.
    #39815456
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill_l.s.,

а зачем вы обновляете невалидную базу? Сначала приведите ее в порядок, добавьте колонки, а потом обновляйте. У вас запросы от одной базы, а таблицы - от другой.
...
Рейтинг: 0 / 0
Не работает IF в связке с UPDATE.
    #39815459
Kirill_l.s.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK, Благодарю!
...
Рейтинг: 0 / 0
Не работает IF в связке с UPDATE.
    #39815460
Kirill_l.s.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич, Благодарю!
...
Рейтинг: 0 / 0
Не работает IF в связке с UPDATE.
    #39815463
Kirill_l.s.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов, Задача добавить запрос в скрип, который будет работать в разных вариациях БД, так как этот скрипт используется на разных БД.
Ввиду новых подробностей буду предварительно укомплектовывать, потом Апдейдить ).
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не работает IF в связке с UPDATE.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]