SQL Server:无法更新表中的列

时间:2016-04-21 06:41:29

标签: 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,我没有收到任何错误消息。

我做错了什么?非常感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

您的桌子上似乎有instead of update

答案 1 :(得分:1)

而不是像下面那样直接尝试动态查询,

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

答案 2 :(得分: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'