我正在处理由用户更新的视图。此更新基本上改变了列的值。但现在它没有让我这样做,并产生这样的:更新视图不起作用
Update or insert of view or function '' failed because it contains a derived or constant field.
我知道这是因为我在SELECT语句中的常数,但有什么办法来解决呢?请帮助
这是我认为的代码
Create view Schema.View1
as
SELECT
Convert(Varchar(20),l.jtpName) as JobType, Convert(Varchar(10),' <All> ')as SubCategory , Convert(varchar (3), Case when a.jtpName= l.jtpName and a.subName= ' <All> ' then 'Yes' else 'No' end) As AutoProcess from Schema.JobType l left join Schema.Table1 a on l.jtpName=a.jtpName
UNION
SELECT
Convert(Varchar(20),a.jtpName) as JobType, Convert(Varchar(10),a.subName) as SubCategory, Convert(varchar (3),Case when b.jtpName= a.jtpName and b.subName= a.subName then 'Yes' else 'No' end) As AutoProcess from Schema.SubCategory a left join fds.Table1 b on a.subName=b.subName
GO
最后的更新语句:
UPDATE Schema.View1 SET AUTOPROCESS = Case WHEN AUTOPROCESS = 'Yes' Then 'No' END Where JOBTYPE = 'Transport' and SUBCATEGORY= 'Cargo'
谢谢
啊谢谢这个文件非常有帮助。我想我将不得不创建另一个表并将该视图的值提供给它,然后更新表而不是视图。 – crunchynutter
@crunchynutter我不认为你应该创建一个表,以便你可以处理更新操作。改用存储过程。 – Crono