如题,可以对一个view里的数据进行update么?
类似于下边这种。
UPDATE (
SELECT
DEPT_NO, USER_NAME
FROM USER_MASTER
WHERE DEPT_NO = '1002'
) view_1
SET
USER_NAME = USER_NAME || ' 氏',
MODIFIED_ON = SYSDATE如果可以更新的话,那对view实际关联的本表由什么影响。以后每次执行view,是update后固定的数据,还是于本表关联的数据?
类似于下边这种。
UPDATE (
SELECT
DEPT_NO, USER_NAME
FROM USER_MASTER
WHERE DEPT_NO = '1002'
) view_1
SET
USER_NAME = USER_NAME || ' 氏',
MODIFIED_ON = SYSDATE如果可以更新的话,那对view实际关联的本表由什么影响。以后每次执行view,是update后固定的数据,还是于本表关联的数据?
解决方案 »
- 调用存储过程报错ORA-06550(急)
- ~~~~~~~~~~~GROUP BY 问题~~~~~~~~!!!
- ORACLE服务器 内网客户端访问正常 外网客户端访问ORA-12541 无监听程序
- oracle schema 与user
- 基础问题,Oracle XE 的 SID 和 TNS 是什么
- 请教各位oracle8.1.7 rman恢复问题
- 数据库事务的定义是什么?就是什么叫做“数据库事务”??
- 如何将一台机器上的oracle数据库完全移植到另外一台机器上?
- 协议适配器错误问题!!
- '1,2,3,4' 转number类型!急!
- oracle数据库表误更新,之前未备份。有什么其他的回复数据的实用办法?
- 两种查询方式哪一种的效率更高?
是可以的,刚才vc555大哥刚在一个帖里回复的,
不过update的情况,必须是一下情况1. view的字段只涉及一个表。
2. 如果涉及多个表的话,被(涉及到的)view列所映射table列(或列的组合)必须是有主健约束的
3. 强制执行,方法是加上hint /*+ BYPASS_UJVC */SQL> CREATE TABLE test1 ( id integer primary key, num integer );
SQL> INSERT INTO test1 VALUES (1,0);
SQL> INSERT INTO test1 VALUES (2,0);SQL> CREATE TABLE test2 ( id integer, num integer, upd integer );
SQL> INSERT INTO test2 VALUES (1,10, 0);
SQL> INSERT INTO test2 VALUES (2,20, 1); SQL> UPDATE ( SELECT t1.id id1, t1.num num1, t2.id id2, t2.num num2 FROM test1 t1, test2 t2 WHERE t1.id=t2.id AND t2.upd=1) SET num1=num2;
ORA-01779: cannot modify a column which maps to a non key-preserved tableSQL> CREATE UNIQUE INDEX test2_idx_001 ON test2 (id);
SQL> UPDATE ( SELECT t1.id id1, t1.num num1, t2.id id2, t2.num num2 FROM test1 t1, test2 t2 WHERE t1.id=t2.id AND t2.upd=1) SET num1=num2;
1 row updated.SQL> UPDATE ( SELECT /*+ BYPASS_UJVC */ t1.id id1, t1.num num1, t2.id id2, t2.num num2 FROM test1 t1, test2 t2 WHERE t1.id=t2.id AND t2.upd=1) SET num1=num2;