Ошибка оператора обновления SQL после добавления столбца в таблицу - PullRequest
0 голосов
/ 04 июня 2019

У меня есть таблица с именем [user], и я добавляю еще один столбец в таблицу, используя простую инструкцию alter table:

ALTER TABLE [user]
ADD Company nvarchar(50) null

Когда я пытаюсь выполнить простое обновление, как показано ниже

 UPDATE dbo.[User] 
   SET  username = 'al'
             WHERE UserId = 17

Я получаю сообщение об ошибке

Сообщение 213, Уровень 16, Состояние 1, Процедура User_INSERT_UPDATE_DELETE, Строка 6 [Стартовая строка запуска 26]

Имя столбца или номерпредоставленные значения не соответствуют определению таблицы.

Если я опускаю столбец, все работает нормально.

Заранее спасибо!

1 Ответ

0 голосов
/ 04 июня 2019

Это не ошибка из заявления об обновлении. Эта ошибка происходит из оператора вставки, где отсутствует список столбцов. Это одна из основных (но не единственных) причин, по которой вы всегда должны указывать список столбцов в операторе вставки.

Вам следует поискать и исправить эту проблему в другом месте процедуры User_INSERT_UPDATE_DELETE (или триггера). Фактически, вам, вероятно, следует пройтись по всем процедурам в базе данных, содержащей операторы insert, и убедиться, что все операторы вставки содержат список столбцов, чтобы избежать повторной обработки такой ошибки.

Правильный способ записи оператора insert в T-SQL заключается в следующем:

INSERT INTO <TableName> (Column_1 [, Column_2, ... Column_n])
VALUES (Value_1 [, Value_2, ... Value_n])

Или это:

INSERT INTO <TableName> (Column_1 [, Column_2, ... Column_n])
SELECT Value_1 [, Value_2, ... Value_n]
FROM <OtherTableOrView>
...