gpt4 book ai didi

sql - View 或函数的更新或插入失败,因为它包含派生字段或常量字段

转载 作者:行者123 更新时间:2023-12-03 22:19:57 26 4
gpt4 key购买 nike

我一直试图了解以下 View 有什么问题,不幸的是,除了使用我想避免的触发器之外,我无法在任何地方找到我的答案。鉴于以下 View ,当我尝试将其插入时,会出现上述错误,但是如果我删除 Company 表的内部连接,一切似乎都可以正常工作:

CREATE VIEW [dbo].[vwCheckBookingToCheck]
WITH SCHEMABINDING
AS
SELECT [checkUser].[CheckID] ,
[checkUser].[CheckToTypeID] ,
[checkUser].[CheckNumber] ,
[checkUser].[CheckDate] ,
[checkUser].[CheckAmount] ,
[checkUser].[CheckStatusID] ,
[checkUser].[CheckAcceptedBy] ,
[checkUser].[CreatedBy] ,
[checkUser].[CreatedDateTime] ,
[checkUser].[CheckToUserID] [ToID],
[checkUser].[CheckFromCompanyID] [FromID],
[companyFrom].[CompanyName]
FROM [dbo].[CheckUser] [checkUser]
INNER JOIN [dbo].[Company] [companyFrom] ON [companyFrom].[CompanyID] = [checkUser].[CheckFromCompanyID]

UNION ALL

SELECT [checkCompany].[CheckID] ,
[checkCompany].[CheckToTypeID] ,
[checkCompany].[CheckNumber] ,
[checkCompany].[CheckDate] ,
[checkCompany].[CheckAmount] ,
[checkCompany].[CheckStatusID] ,
[checkCompany].[CheckAcceptedBy] ,
[checkCompany].[CreatedBy] ,
[checkCompany].[CreatedDateTime] ,
[checkCompany].[CheckToCompanyID] [ToID],
[checkCompany].[CheckFromCompanyID] [FromID] ,
[companyFrom].[CompanyName]
FROM [dbo].[CheckCompany] [checkCompany]
INNER JOIN [dbo].[Company] [companyFrom] ON [companyFrom].[CompanyID] = [checkCompany].[CheckFromCompanyID]

GO

这是我的插入,我只插入 [CheckUser] 或 [CheckCompany]:
INSERT INTO [dbo].[vwCheckBookingToCheck]   
( [CheckToTypeID] ,
[CheckNumber] ,
[CheckDate] ,
[CheckAmount] ,
[CheckStatusID] ,
[CheckAcceptedBy] ,
[CreatedBy] ,
[CreatedDateTime] ,
[ToID] ,
[FromID]
)
SELECT 2,
'Test' , -- CheckNumber - varchar(255)
'2014-08-23 20:07:42' , -- CheckDate - date
1233 , -- CheckAmount - money
0 , -- CheckStatusID - int
1 , -- CheckAcceptedBy - int
1 , -- CreatedBy - int
'2014-08-23 20:07:42' , -- CreatedDateTime - datetime
1, -- ToID - int
1 -- FromID - int

CheckToTypeID 是我的检查约束,有没有办法让这个 View 与内部连接一起工作?同样,如果我删除内部连接,我可以让它工作,但如果可能的话,我想保留它们。

我正在使用 SQL Server 2012,不胜感激。

谢谢,
保罗

最佳答案

这是一个有点长的评论。

我无法轻易找到关于此主题的 2012 年文档,但 SQL Server 2008 documentation很清楚:

A view is considered an updatable partitioned view when the view is a set of SELECT statements whose individual result sets are combined into one using the UNION ALL statement. Each SELECT statement references one SQL Server base table.


from 中有两个表子句,所以它是不可更新的。这是一个只读 View 。我不知道这在 2012 年发生了变化。

关于sql - View 或函数的更新或插入失败,因为它包含派生字段或常量字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25472378/

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