sql刷新视图
① plsql表更新后视图未更新
plsql表更新后视图未更新,可能是不汇总或数据被加工过
一般来说,通过视图进行数据更新(INSERT、UPDATE、DELETE),只要该视图是单纯的SELECT语句定义的视图即可。也就是说,如果是不汇总或数据被加工过而是直接显示数据的视图,一般可以通过该视图来更新数据。在这种情况下,在数据库侧,将针对视图的DML语句(INSERT、UPDATE、DELETE)自动转换成表的DML语句,来更新数据。
但是,对于定义的复杂视图,DML语句无法在数据库侧转换成表的DML语句,因此会发生错误。这种情况下如果在数据库侧无法转换成表的DML语句,我们也可以通过开发者准备的程序,转换成表的DML语句,也可以实现对视图的DML。那就是“INSTEAD OF 触发器”
② sql server2008 更新视图怎么更新
在之前视图的那代码中添加自己想要的那天列,然后重新执行生成一不就可以了吗?
例如之前的是:
Create VIEW SHITU1 AS SELECT 工资 from dbo.sheet2$
你可以这样修改加入列“姓名”后再执行一次:
Create VIEW SHITU1 AS SELECT 姓名, 工资 from dbo.sheet2$
③ 在SQL 里哪些视图可以更新,哪些不可以更新。(要写500字的论文)希望提供全面一点的~
视图一般式可以更新的,但前提是不能有聚合函数或分组等。
在这个前提下:
1:简单视图
就是由一个表生成出来的视图,这种情况你更新她就和更新表一样
2:二次加工出来的简单视图
仍然是一个表出来的视图,但是视图中存在通过函数或计算二次加工出来的其他字段。更新的时候只要不更新这些加工出来的字段也是可以更新的。
3:组合视图
通过表之间关联联合等出来的复杂视图。这种视图更新的时候要注意你所更新的列要来自同一个表,也是可以更新的。
4:静态视图
这种视图等同于表可以直接更新,但是更新的数据尽在视图中反映出来,不反映到原表
5:其他视图
通过表函数等其他生成的更为复杂的视图。一般不可更新
④ SQL语言视图更新
INSERT语句向视图插入数据,但应该注意的是:插入的数据实际上存放在基表中,而不是视图中;
updare好象不行,需要用到另一语句(忘了,呵呵)
⑤ SQL中视图的创建。修改,删除
创建视图
CREATE [OR REPLACE] VIEW 视图名(列1,列2...)
AS SELECT (列1,列2...)
FROM ;
[WITH [CASCADED|LOCAL] CHECK OPTION]
修改视图
CREATE OR REPLACE VIEW 视图名 AS SELECT [ ] FROM [ ];
[WITH [CASCADED|LOCAL] CHECK OPTION]
删除视图
drop view 视图名称
(5)sql刷新视图扩展阅读:
查看视图
show tables;
desc 视图名
查看视图定义
show create view 视图名称G
通过视图变更数据
insert into 视图名
update 视图名
[WITH [CASCADED|LOCAL] CHECK OPTION] 决定了是否允许更新数据记录不再满足视图的条件。
local只要满足本视图的条件就可以更新
cascaded则必须满足所有针对该视图的所有视图的条件才可以更新,默认是cascaded。
为了防止通过视图修改导致数据无故丢失,建议加上WITH CHECK OPTION
参考资料来源:网络-SQL语句
⑥ 如何在线修改全刷新的物化视图的底层SQL
如何在线修改全刷新的物化视图的底层SQL
当你CREATE OR REPLACE VIEW SOME_VIEW AS SELECT ... 时,如果结构不变,物化视图及其依赖对象不会失效。但这不能用于快速刷新的物化视图。
-- 建立测试环境:
CREATE TABLE T (ID NUMBER PRIMARY KEY);
INSERT INTO T VALUES (1);
INSERT INTO T VALUES (2);