我有这样的看法:
Create View View1
AS
Select F1,F2,0 As F3
From TB1
GO
Update View1 Set F3=1
这些命令会引发此错误:
有没有更新“F3”字段的解决方案?
谢谢
最佳答案
更改 View 中常量列值的唯一方法是更改 View 本身。在 View 上的常量或计算列上运行 UPDATE 语句没有意义,因为该值并未物理存储在任何表中。因此,您必须执行以下操作:
ALTER VIEW View1 A
Select F1,F2,1 As F3
From TB1
现在,您可能会想将此代码放入存储过程中。不幸的是,这也是不可能的,因为 DDL statements are not allowed in Stored Procedures 。因此,另一个解决方案是将 F3 列的值存储在单独的表中并更改 View 定义以将该值带入 View :
CREATE TABLE F3Column (
Value AS int
)
go
INSERT F3Column VALUES (0)
go
CREATE VIEW View1 AS
select F1, F2, Value AS F3
from TB1, F3Column
go
-- This will allow you to change the value directly on the view:
UPDATE View1 SET F3 = 1
只需确保您的 F3Column 表始终包含 1 条记录。如果它不包含任何记录,则 View1 将始终为空。如果它包含超过 1 条记录,View1 会给你重复。
关于sql-server - 为 SQL Server 中的 View 添加常量可更新列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30295999/