SQLサーバーのビュー内のデータを変更するにはどうすればよいですか?

再版: SQL サーバーのビュー内のデータを変更するにはどうすればよいですか? - シャオ・シャオシー - ブログガーデン (cnblogs.com)

SQLサーバーのビュー内のデータを変更するにはどうすればよいですか?

テストしてみたところ、ビューのデータにフラグフィールドがある場合、このまま(FlagStateが0)だと変更できません

--创建視图语句 --- EdsProd a left join EdsProdUnit b on 
    a.ProdUnit = b
    から a.Uid ProdId、a.Code ProdCode、a.Name ProdName、b.Name ProdUnit、0 を FlagState として選択して
ビュー
V_EdsProd_1 を作成します
    a.DownloadFlag=0 および a.State=9 が
配置されるUid

ビューデータのクエリ

--ビューのデータをクエリします--- 
select * from V_EdsProd_1

ビューデータ (33921、33922) のステータスを変更したい場合、ステータスは 1 です。

--ビューデータを変更するための構文-- 
update V_EdsProd_1 set FlagState=1 where ProdId in(33921,33922);

エラーは次のとおりです。

 次に、上記で作成したビューを再定義し (0 を FlagState として)、この 0 をデータ テーブルに存在するフィールドに変更します。

--ビューの削除構文--
ビュー V_EdsProd_1 をドロップ; 

--ビュー ステートメントの
作成--- ビュー V_EdsProd_1を選択
として、
    EdsProd から
    a.Uid ProdId、a.Code ProdCode、a.Name ProdName、a.DownloadFlag を FlagState として作成し、
    左結合 EdsProdUnit b 
on a.ProdUnit = b.Uid 
    where a.DownloadFlag=0 および a.State=9

変更ステートメントを再度実行すると、結果は次のようになります。

 

要約:

  データベースのビュー内のデータを変更する場合は、変更する前にタグ フィールドが永続的であること (このフィールドが存在する必要があります) を確認する必要があります。そうでない場合は、

「0 または ' ' AS FlagState」だけを使用した場合、それは単なる参照であり、次回ビューを呼び出すときも初期化されたままであり、変更することはできません。

普段はもっとメモを取り、使用するときだけ見て、進捗状況を記録し、結果を共有することができます。

 

おすすめ

転載: blog.csdn.net/chentiebo/article/details/131087167