2016-04-21 70 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'