1. 程式人生 > >sql server中如何修改視圖中的數據?

sql server中如何修改視圖中的數據?

結果 select http com bubuko state -- span 調用

sql server中如何修改視圖中的數據?

我做個測試,視圖的數據有標記字段時,如果是這種方式(0 as FlagState),是無法修改的

--創建視圖語句 ---
create view V_EdsProd_1
as
    select a.Uid ProdId, a.Code ProdCode,a.Name ProdName,b.Name ProdUnit,0 as FlagState 
    from EdsProd a 
    left join EdsProdUnit b on a.ProdUnit = b.Uid
    where a.DownloadFlag=
0 and a.State=9 go

查詢視圖的數據

--查詢視圖的數據---
select * from V_EdsProd_1

技術分享圖片

假如,我們要修改視圖的數據(33921,33922)的狀態為1

--修改視圖數據的語法--
update V_EdsProd_1 set FlagState=1 where ProdId in(33921,33922);

報錯如下:

技術分享圖片

那麽,我們將上面創建的視圖,重新定義一下(0 as FlagState)把這個0改成數據表中存在的字段

--刪除視圖的語法--
drop view V_EdsProd_1;

--創建視圖語句 ---
create view V_EdsProd_1 as select a.Uid ProdId, a.Code ProdCode,a.Name ProdName,a.DownloadFlag as FlagState from EdsProd a left join EdsProdUnit b on a.ProdUnit = b.Uid where a.DownloadFlag=0 and a.State=9 go

再次執行修改語句,結果如下:

技術分享圖片

總結:

  數據庫的視圖的數據如果想要修改,必須保證標記字段是持久化存在的(得有這個字段),才能修改;反之,

如果只是用“0或‘ ‘ AS FlagState” 這種,只是一個引用,下次調用視圖還是會被初始化,無法修改

sql server中如何修改視圖中的數據?