给视图插入数据的一个问题 各位高手,创建视图的SQL语句里用到了分组和聚合函数,创建成功是不是只能查询不能往里面插入啊?如果能插入是该怎么处理才不报错呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一些视图可更新的限制1、在连接视图中不能有Order by排序语句。2、基础表中所有的NOT NULL列都必须在这个视图中。3、需要更新的列不是虚拟列。4、不能够具有分组函数。5、建立视图的Select语句中,不能够有集合运算符、子查询。 单单简单的插入是会报错的当然 如果楼主非要插入成功 那么可以通过INSTEAD OF触发器来实现对相应表的操作不过这样几乎没什么意义 因为逻辑会很复杂 有时甚至是无法判定的下面是个小例子 仅仅是为了说明方法 建议楼主还是不要这样做SQL> select * from t1; ID1 ID2---------- ---------- 1 2 3 6 1 7 3 7SQL> create view v1 2 as 3 select id1,sum(id2) sum 4 from t1 5 group by id1;视图已创建。SQL> select * from v1; ID1 SUM---------- ---------- 1 9 3 6SQL> create or replace trigger tri1 2 instead of insert on v1 3 begin 4 insert into t1(id1,id2) values(:new.id1,:new.sum); 5 end; 6 /触发器已创建SQL> insert into v1(id1,sum) values(3,7);已创建 1 行。SQL> select * from t1; ID1 ID2---------- ---------- 1 2 3 6 1 7 3 7SQL> select * from v1; ID1 SUM---------- ---------- 1 9 3 13 视图是一个或几个基本表(或视图)导出来的表,是一个虚的表。视图是更新是有限制的。1.如果有2个或以上的不能更新。2.视图定义含有group by的句子,或含有distinct 也不能更新。3.来自聚集函数,也不能更新。 3楼:SQL> select * from v1; ID1 SUM---------- ---------- 1 9 3 6--有问题该是13 The ORDER BY clause can be used in the subquery? 数据库!数据库!oracle 数据库救急!!! 在.net中向oracle数据库中插入有变量的数据问题 这个job为什么不运行?我想使它每分钟运行一次. 请教一个SQL问题,急! 请问我怎么创建一个表通过sqlplus, 小问题,急~!! 如何重建CONTROL FILE ORACLE中如何导出和导入数据库表 在Oracle的sqlplus命令下,如何才能登陆全局用户(global user)? Oracle中存储过程在java中获得值的问题 新手请教oracle安装问题
1、在连接视图中不能有Order by排序语句。
2、基础表中所有的NOT NULL列都必须在这个视图中。
3、需要更新的列不是虚拟列。
4、不能够具有分组函数。
5、建立视图的Select语句中,不能够有集合运算符、子查询。
不过这样几乎没什么意义 因为逻辑会很复杂 有时甚至是无法判定的下面是个小例子 仅仅是为了说明方法 建议楼主还是不要这样做
SQL> select * from t1; ID1 ID2
---------- ----------
1 2
3 6
1 7
3 7
SQL> create view v1
2 as
3 select id1,sum(id2) sum
4 from t1
5 group by id1;视图已创建。
SQL> select * from v1; ID1 SUM
---------- ----------
1 9
3 6
SQL> create or replace trigger tri1
2 instead of insert on v1
3 begin
4 insert into t1(id1,id2) values(:new.id1,:new.sum);
5 end;
6 /触发器已创建SQL> insert into v1(id1,sum) values(3,7);已创建 1 行。SQL> select * from t1; ID1 ID2
---------- ----------
1 2
3 6
1 7
3 7SQL> select * from v1; ID1 SUM
---------- ----------
1 9
3 13
视图是更新是有限制的。
1.如果有2个或以上的不能更新。
2.视图定义含有group by的句子,或含有distinct 也不能更新。
3.来自聚集函数,也不能更新。
SQL> select * from v1; ID1 SUM
---------- ----------
1 9
3 6--有问题该是13