sql 修改视图的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 修改视图的问题相关的知识,希望对你有一定的参考价值。
先创建一个视图
CREATE VIEW VIEW_1
AS
SELECT sname,sex,2011-sage '出生年份'
FROM student
WHERE sex='男'
然后想对视图中某个人的年龄进行修改,应该怎么写?
UPDATE VIEW_1
SET 出生年份=2011-23
WHERE sname='李军'
我开始是这样写的,提示的错误是:包含有派生域或常量域。
求解~~
可以这样修改视图的定义和更新语句:
CREATE VIEW VIEW_1
AS
SELECT sname,sex,sage \'出生年份\'
FROM student
WHERE sex=\'男\'
UPDATE VIEW_1
SET 出生年份=2011-23
WHERE sname=\'李军\'追问
谢谢你的方法~~
CREATE VIEW VIEW_1
AS
SELECT sname,sex,sage,2011-sage \'出生年份\'
FROM student
WHERE sex=\'男\'
UPDATE VIEW_1
SET sage=23
WHERE sname=\'李军\'
如果这样写 的话,出生年份这列的值会改变吗?
这样当然可以,不过出生年份这个列就失去作用了。
参考技术A 视图中有一字段是经过转换而来,故而不可更新追问如果非改不可……有什么办法吗?
追答这个“出身年份”字段是数据库中没有的,在Student表中存的只有年龄,而你创建的View_视图时基本表中的数据的一种筛选(是Student表中的数据),所以你想通过视图来进行更新这样的操作,但因为“出身年份”这个字段在数据库中就没有,所以你让更新后“出身年份”的值往哪里放呢,所以这种更新是不能成功的,是违法的。
希望这样的讲解你能看懂,结合实际想一想更容易理解。
应该加个as作为别名吧:(2011-sage) as '出生年份'追问
我用的sql server2000,创建视图是没有问题的。
sql server中,修改视图名字的SQL语句
在查询分析器中使用更改视图的命令将视图“V_学院”更名为“V_学院男生”
sql server中修改视图名字的SQL语句如下:1、rename 原试图名 to 现试图名;
2、输入下面语句即可完成:
CREATE VIEW 视图名
AS
<select statement>
[WITH CHECK OPTION] 参考技术A 重命名
exec sp_rename V_学院 ,'V_学院男生'
go 参考技术B sp_rename 'V_学院' ,'V_学院男生' 参考技术C exec sp_rename 'V_学院' ,'V_学院男生'
以上是关于sql 修改视图的问题的主要内容,如果未能解决你的问题,请参考以下文章