视图或函数的更新或插入失败,因为它包含派生字段或常量字段
我一直在尝试了解以下视图的问题所在,但不幸的是,除了使用触发器之外,我无法在任何地方找到我的答案,而我希望避免使用触发器。给定以下视图,当我尝试将其插入时,会出现上述错误,但是,如果我删除了对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是我的检查约束,是否有任何方法可以使此视图与内部联接一起使用?同样,如果删除内部联接,则可以使其正常工作,但如果可能,我希望保留它们。
我正在使用SQL Server 2012,不胜感激。
谢谢保罗
回答:
这有点长,可以发表评论。
我无法轻松找到关于此主题的2012文档,但是SQL Server 2008文档非常清楚:
当视图是一组SELECT语句的视图时,该视图被视为可更新的分区视图,这些语句的单个结果集使用UNION ALL语句组合为一个。
from
子句中有两个表,因此它是不可更新的。这是一个只读视图。我不知道这在2012年有所改变。
以上是 视图或函数的更新或插入失败,因为它包含派生字段或常量字段 的全部内容, 来源链接: utcz.com/qa/413682.html