zoukankan      html  css  js  c++  java
  • sql server中如何修改视图中的数据?

    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” 这种,只是一个引用,下次调用视图还是会被初始化,无法修改

  • 相关阅读:
    Java实现 LeetCode 92 反转链表 II
    Java实现 LeetCode 92 反转链表 II
    Java实现 LeetCode 91 解码方法
    Java实现 LeetCode 91 解码方法
    Java实现 LeetCode 91 解码方法
    CDialogBar(对话条)和CReBar(伸缩条)的编程
    WinSock
    WinSock
    静态文本显示图标图片
    拆分窗口
  • 原文地址:https://www.cnblogs.com/xielong/p/10516975.html
Copyright © 2011-2022 走看看