SQL通过视图添加一条记录,视图基于的表这条记录成功了,但是视图却没把这条记录加添进去?!(有图)

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 这里应该可以看到 。。

追问

那怎样让它有?

就是视图里也有新插入的记录

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-07
主键,非空是什么意思