2016-04-21 5 views
6

Я не могу понять, почему мой столбец не обновляется.SQL Server: не удается обновить столбец в таблице

Я добавил новый столбец в существующую таблицу следующим образом:

ALTER TABLE dbname..tablename 
    ADD RejectedCode [varchar](5) NULL 

Когда я запускаю ниже запрос:

UPDATE dbname..tablename 
SET RejectedCode = 'OTHER', 
    Notes = 'DEBUG' 
WHERE RecordID = 12345 

он говорит:

(1 row(s) affected) 

проверить соответствующую запись, и я могу увидеть, что столбец Notes обновлен, но в новом столбце по-прежнему отображается NULL, и я не получить сообщение об ошибке.

Что я делаю неправильно? Большое спасибо за помощь.

+0

Вы можете запустить это и проверить? select RejectedCode, Notes from dbname..table RecordID = 12345 – Madhivanan

+0

Я только что сделал и получил NULL для отклоненного кода и «DEBUG» для поля Notes – user2430797

+2

Возможно, у вас есть триггер «вместо обновления» на вашей таблице? –

ответ

3

Похоже, у вас есть триггер instead of update на вашем столе

+0

Для других: это был правильный ответ на мою проблему. Я изменил соответствующий триггер, и теперь он работает нормально. Благодаря! – user2430797

1

Вместо обновления непосредственно попробовать динамический запрос, как показано ниже,

EXEC('Update dbname..tablename SET RejectedCode = ''OTHER'', 
     Notes = ''DEBUG'' WHERE RecordID = 12345') 
1

Казаться как есть INSTEAD OF UPDATE триггер на вашем столе. для поиска триггеров, связанных со столом, выполните следующие действия.

В проводнике объектов перейдите к своему имени таблицы и щелкните узел триггеров.

или использовать следующий код

SELECT 
    sysobjects.name AS trigger_name 
    ,USER_NAME(sysobjects.uid) AS trigger_owner 
    ,s.name AS table_schema 
    ,OBJECT_NAME(parent_obj) AS table_name 
    ,OBJECTPROPERTY(id, 'ExecIsUpdateTrigger') AS isupdate 
    ,OBJECTPROPERTY(id, 'ExecIsDeleteTrigger') AS isdelete 
    ,OBJECTPROPERTY(id, 'ExecIsInsertTrigger') AS isinsert 
    ,OBJECTPROPERTY(id, 'ExecIsAfterTrigger') AS isafter 
    ,OBJECTPROPERTY(id, 'ExecIsInsteadOfTrigger') AS isinsteadof 
    ,OBJECTPROPERTY(id, 'ExecIsTriggerDisabled') AS [disabled] 
FROM sysobjects 

INNER JOIN sysusers 
    ON sysobjects.uid = sysusers.uid 

INNER JOIN sys.tables t 
    ON sysobjects.parent_obj = t.object_id 

INNER JOIN sys.schemas s 
    ON t.schema_id = s.schema_id 

WHERE sysobjects.type = 'TR' 
and s.name = 'your table name' 
Смежные вопросы