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

最新文章

  1. MySQL模糊搜索的四种用法
  2. 《利用Python进行数据分析: Python for Data Analysis 》学习随笔
  3. nodejs学习笔记二——链接mongodb
  4. 自定义圆形控件RoundImageView并认识一下attr.xml
  5. 关于markdown的学习
  6. jQuery Validate input是动态变化的
  7. 完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能
  8. Gulp:新一代前端构建利器
  9. 通过共享用户ID来实现多个应用程序使用同一个进程(一些情况的测试)
  10. 洛谷P1198 [JSOI2008]最大数
  11. Intent传值之通过Application传值
  12. POJ1985 DFS【STL__vector_的应用】
  13. 引用WCF地址报下载“https://xxx:8004/TerminalHandler.svc?disco”时出错问题
  14. Ubuntu安装中文输入法
  15. 疑似CPU或者内存故障导致进程崩溃
  16. MAMP显示文件列表
  17. Java中clone方法的使用
  18. npm用法
  19. s和t的特殊权限
  20. 蓝牙协议分析(9)_BLE安全机制之LL Privacy

热门文章

  1. css3 样式过度器 Transition
  2. 【.NET】 HTTP协议之webrequest
  3. 解决 Invalid character found in method name. HTTP method names must be tokens 异常信息
  4. Exp5 MSF基础应用 20164303景圣
  5. linux install Openvino
  6. dnsmasq 设置自动获取主机名
  7. 图像旋转与图像缩放及Matlab代码实现
  8. Android系统应用Mms之短信会话列表加载流程一
  9. java中‘\'和'/'的区别
  10. oracle 锁表