我对SQL还比较陌生。我以前创建了一个视图,我试图删除该视图。视图名为Sales
,db是'dbo'。我不断收到此错误:删除SQL Server视图
消息4405,级别16,状态1,行1
视图或函数“dbo.Sales”不可更新,因为修改会影响多个基表。
我的代码是这样的:
DELETE FROM [dbo].[Sales]
WHERE SOHNUM_0 IN ('SO004025', 'SO000942', 'SO003772', 'SO005501', 'SO005523')
GO
该视图包含SOHNUM
(销售订单号)和SOHDAT
(订单日期)。该版本是SQL Server 2012的
select语句是:
Select * from [dbo].[Sales];
和结果集为:
SOHNUM SOHDAT
----------------------------------------
SO004025 2030-07-25 00:00:00.000
SO000942 2018-12-17 00:00:00.000
SO003772 2017-01-10 00:00:00.000
SO005501 2017-01-03 00:00:00.000
SO005523 2017-01-03 00:00:00.000
SO005523 2017-01-03 00:00:00.000
SO005523 2017-01-03 00:00:00.000
SO005523 2017-01-03 00:00:00.000
SO005523 2017-01-03 00:00:00.000
SO005523 2017-01-03 00:00:00.000
什么是视图的定义...不是从它读取数据的选择语句。 –
等等,你想从视图中删除数据,或删除视图,或从视图的输出中删除一些数据?如果最后一个'select * from dbo.sales where sohnum_0 in'('SO004025','SO000942','SO003772','SO005501','SO005523')'会排除reocrds,drop view dbo.sales会删除视图。如果你想从视图中删除特殊记录....那么你不能从源表中删除。 (除非视图基于1并且只有1个表) – xQbert
建议:(1)不要从视图中删除。 (2)名称视图将它们与基表区分开来。 –