把这一页要用的视图先建出来
每一页的终端各自独立,上一页建的视图这里没有。
重 点
s_update_view 是整张表的镜子,没挑行也没挑列,等会儿拿它改数据。
知道更多
顶部的重置环境按钮能把这一页退回刚打开的样子,视图和数据一起清干净。
每一页的终端各自独立,上一页建的视图这里没有。
s_update_view 是整张表的镜子,没挑行也没挑列,等会儿拿它改数据。
顶部的重置环境按钮能把这一页退回刚打开的样子,视图和数据一起清干净。
同样三列数据,换三个名字显示。
改完之后列名、列数、筛选条件全变了,视图名却还是原来那个。
外面的程序一直写着 SELECT * FROM s_view,它需要改吗?
往视图里插,落到的是它背后那张 s 表。
查的是基本表 s,插进去的那一行确确实实落在了 s 里。
视图没有存数据的地方,所有的写操作都被翻译成对基本表的操作。
UPDATE 和 DELETE 同样落到基本表上。
删完之后基本表回到八行,刚才那一行是真的从 s 里没了。
视图能改数据的前提很窄,下一题就会看到大部分视图其实改不了。
一行是好几行算出来的,机器说不清该动哪一行。
插报 1471 改报 1288,两个错误号不一样,但原因是同一个。
一行横跨两张表,删它是删学生还是删选课记录。
查得好好的视图,一到删就报 1395,一到插就报 1394。
这个视图查起来一点问题都没有,为什么删就不行?
改完之后这一行还得留在视图的范围里。
第一条能过第二条报 1369,差别只在插进去的那一行还在不在理学院。
不加 WITH CHECK OPTION 时第二条也能插进去,只是插完就从视图里消失了。
删视图不动数据,删基本表却会让视图变成空头支票。
最后一条报 1356,视图还在,它依赖的那张表没了。
视图只存一句定义,删掉它就是删掉那句话,基本表一行都不会动。
建、改、用、删各一遍,最后一条会让你愣一下。
插进去了,可视图里找不着它,因为这一行的专业是空值,不在视图的范围内。
这正是 WITH CHECK OPTION 要解决的事,加上它这一条插入会被直接拦掉。
第六条查不到,第七条却查得到,数据到底进去了没有?