2016-04-21 191 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

可以运行这个检查? 从dbname..table中选择RejectedCode,Notes注意RecordID = 12345 – Madhivanan

+0

我刚刚做了,并且对于拒绝的代码获得了NULL,对于注释字段获得了“DEBUG”字段 – 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'