gpt4 book ai didi

sql-server - 在 SQL Server 中为 View 添加常量可更新列

转载 作者:行者123 更新时间:2023-12-01 12:35:29 26 4
gpt4 key购买 nike

我有这样的看法:

Create View View1 
AS
Select F1,F2,0 As F3
From TB1

GO

Update View1 Set F3=1

这些命令会引发此错误:

Update or insert of view or function 'view1' failed because it contains a derived or constant field.

有更新“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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com