再版: 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」だけを使用した場合、それは単なる参照であり、次回ビューを呼び出すときも初期化されたままであり、変更することはできません。
普段はもっとメモを取り、使用するときだけ見て、進捗状況を記録し、結果を共有することができます。