我再给各位大虾举详细的一个例子:CREATE TABLE order_master(
orderno VARCHAR2(5) primary key,
Odate DATE,
Vencode VARCHAR2(5),
ostatus CHAR(1),
del_date DATE);CREATE TABLE order_detail(
itemcode VARCHAR2(5) primary key,
qty_ord NUMBER(5),
qty_deld NUMBER(5),
orderno VARCHAR2(5),
foreign key(orderno) references order_master(orderno));insert into order_master values(
'o001',sysdate,'CHINA','P',sysdate);
insert into order_detail values(
'b10',200,200,'o001');CREATE VIEW orders
AS SELECT o.orderno, o.odate, vencode, itemcode, qty_ord
FROM order_master o, order_detail d
WHERE o.orderno=d.orderno;下列语句可以修改视图成功:
update orders set qty_ord=qty_ord*2 where itemcode='b10';视图不允许使用下面的UPDATE语句:
update orders set odate=odate+1 where orderno='a10';
此语句失败,并返回ORA-01779错误(“无法修改与非键值保存表对应的列”),因为它试图修改基础表ORDER_MASTER,而ORDER_MASTER表在ORDERS视图中不是键保留表。请问大虾们就在这个例子中,如何确定键保留表?
orderno VARCHAR2(5) primary key,
Odate DATE,
Vencode VARCHAR2(5),
ostatus CHAR(1),
del_date DATE);CREATE TABLE order_detail(
itemcode VARCHAR2(5) primary key,
qty_ord NUMBER(5),
qty_deld NUMBER(5),
orderno VARCHAR2(5),
foreign key(orderno) references order_master(orderno));insert into order_master values(
'o001',sysdate,'CHINA','P',sysdate);
insert into order_detail values(
'b10',200,200,'o001');CREATE VIEW orders
AS SELECT o.orderno, o.odate, vencode, itemcode, qty_ord
FROM order_master o, order_detail d
WHERE o.orderno=d.orderno;下列语句可以修改视图成功:
update orders set qty_ord=qty_ord*2 where itemcode='b10';视图不允许使用下面的UPDATE语句:
update orders set odate=odate+1 where orderno='a10';
此语句失败,并返回ORA-01779错误(“无法修改与非键值保存表对应的列”),因为它试图修改基础表ORDER_MASTER,而ORDER_MASTER表在ORDERS视图中不是键保留表。请问大虾们就在这个例子中,如何确定键保留表?
解决方案 »
- 我安装ORACLE数据库时,默认创建的全局数据库名为oraclexstest,为什么系统标识符(SID)却是:oraclexs ?
- DataAdapter.Fill方法慢的问题
- oracleConnection是线程安全的吗
- 昨天已经跳过楼了,今天还得去么?oracle连接问题,请大家赐教!
- 怎样将一个小数用SQL格式化为百分数形式显示呢?
- 谁知道oracle的版本信息在注册表的什么位置吗?在线等待!
- 简单的问题==》怎么在oracle里面做,自动编号列啊?????
- 请问在Oracle里怎么实现这个功能呢?急
- 急!如何通过卸库和装库命令实现把用户的对象从一个表空间移动到另一个表空间?
- ****安装ORACLE8奇怪的问题,请高手指教,在线等待!!!!!!!!
- 一个简单的问题,关于oracle的存储过程
- 请问oracle 8.0.5能不能用bulk collect?
改为“update orders set odate=odate+1 where itemcode='b10';”
错误也是一样的!