Ошибка SQL Server: неверное имя столбца - PullRequest
0 голосов
/ 19 ноября 2010

при нажатии какой-либо ссылки «Сделать по умолчанию» выполняется следующий SP. Я хочу, чтобы при нажатии на ссылку «Сделать по умолчанию» только запись «IsDefault», соответствующая определенному «UserAddressID» установлен в 1 и ВСЕ остальные записи должны быть установлены в 0 в столбце таблицы

дает мне следующую ошибку: -

Неверное имя столбца 'UserAddressID'

Когда столбец существует! Что не так с моим SP ??

Ответы [ 3 ]

2 голосов
/ 19 ноября 2010

Проблема здесь:

if(UserAddressID!=@UserAddressID)

Столбец UserAddressID не существует вне области действия оператора SQL.

Фактически вам не нужен оператор if ввсе.Проверяемое условие уже включено в SQL.

Вы также можете объединить оба запроса в одном обновлении:

UPDATE SC.UserAddressDetails
SET IsDefault = (CASE WHEN UserAddressID=@UserAddressID THEN 1 ELSE 0 END)
1 голос
/ 19 ноября 2010

Вы можете обновить значение IsDefault до 1, используя -

UPDATE SC.UserAddressDetails SET IsDefault=1 WHERE UserAddressID=@UserAddressID

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

ALTER TABLE SC.UserAddressDetails ADD CONSTRAINT default_isdefault DEFAULT 0 FOR IsDefault 
0 голосов
/ 19 ноября 2010

Это похоже на проблему со схемой, из-за чего ваши хранимые процессы становятся запутанными.Создайте столбец с именем DefaultUserAddressID в своей таблице «Пользователи».Тогда может быть только один.Создание столбца IsDefault в таблице адресов не очень хороший дизайн, поскольку он использует больше данных для достижения той же цели, подвержен ошибкам и требует от вас выполнения всевозможных других проверок во всех хранимых процессах, которые обновляют информацию об адресе.

Чем проще, тем лучше.

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