我對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)名稱視圖將它們與基表區分開來。 –