因为通过视图可以插入,修改或删除数据,因此视图也是一个虚实表,SQL
因为通过视图可以插入,修改或删除数据,因此视图也是一个虚实表,SQLServer将它保存在syscommens系统表中。这是个挑错题,不知道错哪了...
因为通过视图可以插入,修改或删除数据,因此视图也是一个虚实表,SQL Server将它保存在syscommens系统表中。
这是个挑错题,不知道错哪了 展开
这是个挑错题,不知道错哪了 展开
1个回答
展开全部
对于没有复杂处理的 单表 视图, 是可以 UPDATE 的。
例如这样的视图
CREATE VIEW v_1 AS SELECT * FROM 某表
但是 假如你的视图, 是 单表的, 带统计的, 那恐怕是不能 直接 UPDATE 了。
例如这样的视图
CREATE VIEW v_2 AS SELECT id, COUNT(*) as num FROM 某表
--- 前面是单表的, 下面说多表的 ---
对于2张表的,假如你的查询里面, 这2张表是 一对一的关系。 且视图里面, 包含了主键,那么是可以 UPDATE 的。
例如下面这样的 视图
CREATE VIEW temp_view AS
SELECT
t1.name AS t1Name,
t1.age AS t1Age,
t2.name AS t2Name,
t2.age AS t2Age
FROM
t1, t2
WHERE
t1.name = t2.name
然后直接更新视图。
UPDATE temp_view SET t1Age = t2Age;
完整的例子, 可参考
http://hi.baidu.com/wangzhiqing999/blog/item/767be28f634ddb00c8fc7aba.html
但是假如你的视图里面的 2个表, 不是一一对应的。
或者是带了 SUM / COUNT 等统计函数的, 那么可能是没办法更新了。
例如这样的视图
CREATE VIEW v_1 AS SELECT * FROM 某表
但是 假如你的视图, 是 单表的, 带统计的, 那恐怕是不能 直接 UPDATE 了。
例如这样的视图
CREATE VIEW v_2 AS SELECT id, COUNT(*) as num FROM 某表
--- 前面是单表的, 下面说多表的 ---
对于2张表的,假如你的查询里面, 这2张表是 一对一的关系。 且视图里面, 包含了主键,那么是可以 UPDATE 的。
例如下面这样的 视图
CREATE VIEW temp_view AS
SELECT
t1.name AS t1Name,
t1.age AS t1Age,
t2.name AS t2Name,
t2.age AS t2Age
FROM
t1, t2
WHERE
t1.name = t2.name
然后直接更新视图。
UPDATE temp_view SET t1Age = t2Age;
完整的例子, 可参考
http://hi.baidu.com/wangzhiqing999/blog/item/767be28f634ddb00c8fc7aba.html
但是假如你的视图里面的 2个表, 不是一一对应的。
或者是带了 SUM / COUNT 等统计函数的, 那么可能是没办法更新了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询