更新抛出"无效的列名称"当查询没有提到该列时

时间:2014-06-19 17:58:05

标签: sql sql-server-2008 tsql stored-procedures sql-update

我有一个存储过程可以对表进行简单更新:

ALTER PROCEDURE [dbo].[sp_UpdateModel]
(
    @status int,
    @name nvarchar(127),
-- ... omited for brevity ...
    @tourlink nvarchar(256),
    @Original_id int
)
AS
UPDATE dbo.models
SET 
    status = @status,
    name = @name,
-- ... omited for brevity ...
    tourlink = @tourlink
WHERE (id = @Original_id)

(此程序的省略部分只是更多的参数定义和更新,没有什么花哨的)

此过程正常工作,直到我向名为dbo.models tourlinkcoverimage nvarchar(256)的基础表Msg 207, Level 16, State 1, Line 1 Invalid column name 'tourlinkcoverimage'. Msg 207, Level 16, State 1, Line 1 Invalid column name 'tourlinkcoverimage'. Msg 207, Level 16, State 1, Line 1 Invalid column name 'tourlinkcoverimage'. Msg 207, Level 16, State 1, Line 1 Invalid column name 'tourlinkcoverimage'. Msg 207, Level 16, State 1, Line 1 Invalid column name 'tourlinkcoverimage'. Msg 207, Level 16, State 1, Line 1 Invalid column name 'tourlinkcoverimage'. Msg 207, Level 16, State 1, Line 1 Invalid column name 'tourlinkcoverimage'. Msg 207, Level 16, State 1, Line 1 Invalid column name 'tourlinkcoverimage'. 添加了一个新列。该字段可以为空,因此我不需要将其包含在此更新语句中(它在另一个过程中单独更新。)

我可以设置此列的值并成功查询它的值,但上述过程会引发以下错误:

{{1}}

为什么此过程会抛出此错误?我该如何解决?

1 个答案:

答案 0 :(得分:2)

检查表格上的触发器。我的猜测是存在一个,它正在进行某种形式的插入到目标表中。

  

“触发器就像伏都教代码;你更新一个值,突然之间   在隔壁的大楼里灯火通明“ - 理查德坎贝尔,通过   演讲,2008年