我的SQL Server Management Studio视图中,Pocket列默认设置为0
SELECT ToolAssembly.ID, CAST(0 AS int) AS Pocket FROM dbo.ToolAssembly
当我尝试使用代码更新MMSD中的视图时:
SqlCommand command = new SqlCommand("UPDATE [mmlTooling].[dbo].vHHPocket SET Pocket = @pid Where ID = @tid", sqlCon);
command.Parameters.AddWithValue("@pid", pid);
command.Parameters.AddWithValue("@tid", tid);
command.ExecuteNonQuery();
然后,出现错误消息:
更新或插入视图或功能' mmlTooling.dbo.vHHPocket'失败 因为它包含派生或常量字段。
这个问题可能是什么原因以及如何解决?
答案 0 :(得分:4)
CAST(0 AS int) AS Pocket
是“派生或常量字段”。如果Pocket
是常量0,并且您告诉它更新该值,那么您希望数据库在哪里写入该值?
只需更新dbo.ToolAssembly
。
答案 1 :(得分:1)