我正在使用 SQL Server 2005/2008 R2
我的 SQL 脚本是:
UPDATE MyView
SET MyColumn = 'My new value'
WHERE ID = 7
错误信息:
消息 271,级别 16,状态 1,行 1
无法修改列“MyColumn”,因为它是计算列或者是 UNION 运算符的结果。
我知道这MyColumn
是来自基表的计算列(例如 when FullName
is computed from LastName + ', ' + FirstName
)
我的目标是捕获错误,以便脚本继续执行。
我尝试了以下脚本,但没有成功。未捕获错误:
BEGIN TRY
UPDATE MyView
SET MyColumn = 'My new value'
WHERE ID = 7
END TRY
BEGIN CATCH
-- Error occurred while updating view. The script will keep running
END CATCH
我检查了以下脚本试图解决问题,但没有运气:
脚本 1
SELECT is_computed
FROM sys.columns c, sys.views v
WHERE c.object_id = v.object_id
AND v.name = 'MyView'
前面的脚本为所有结果返回 0(这是不正确的,其中一列是计算列)
脚本 2:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'MyView'`
此外,我在返回的脚本中找不到任何与“计算列”或“联合结果”操作有关的字段。