CREATE VIEW CS_T(TNO,TNA,TAGE,TPROF) AS SELECT TNo,TN,Age,Prof FROM T WHERE Dept='计算机' --这是创建视图语句
INSERT INTO CS_T(TNO,TNA,TAGE,TPROF) VALUES('T66','MINGTIAN',60,'计算机')
这是插入记录语句
你看,新插入的记录在视图里没有,但是在创建视图的表里有,按道理不应该是视图和表都有吗?
这个东西,,因为视图中插入数据,其实就是原始表中插入数据。
所以必须将主键,非空,等必须包含在视图中!这句没看懂,哥,能在解释下嘛!跪谢!
你建立表的时候,设置的参数
如 :
age int not NULL ,那么age必须出现在视图中,才能输入数据。。。
其他情况一样。。。没有加非空,就可以不理会
就算是这样,我这个(TNO,TNA,TAGE,TPROF) ('T66','MINGTIAN',60,'计算机') 一样都没少啊,为什么插入失败呢?
追答INSERT INTO CS_T(TNO,TNA,TAGE,TPROF) VALUES('T66','MINGTIAN',60,'计算机')
这个数据库中有了吧
没有啊,是是新记录,要不然表插入怎么成功了呢?
追答你把错误贴出来吧
追问没错误,说了 一行受影响!就这些
追答那就是正确的。已经成功执行了。。
追问可是,视图里没有新插入的记录啊,我就好奇这点!(我刷新了,还是没有)
追答select * from INTO CS_T
看看记录。。有没有增加 。
没有!
追答截图,看看 。 执行下面的语句
select * from CS_T
CREATE VIEW CS_T(TNO,TNA,TAGE,TPROF) AS SELECT TNo,TN,Age,Prof FROM T WHERE Dept='计算机'
你这个是获取 Dept='计算机' 的数据,肯定没有了。。。。。 。
你这里插入时 Dept为空的 ,,
select * from T 这里应该可以看到 。。
那怎样让它有?
就是视图里也有新插入的记录