添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

当我更新一个视图的时候,遇到这个错误:ORA-01779: 无法修改与非键值保存表对应的列

01779, 00000, "cannot modify a column which maps to a non key-preserved table"
// *Cause: An attempt was made to insert or update columns of a join view which
//        map to a non-key-preserved table.
// *Action: Modify the underlying base tables directly.

可以来模拟这个错误:

SQL> desc gw2
Name    Type    Nullable Default Comments
------- ------- -------- ------- --------
SID    INTEGER Y
OLD_SID INTEGER Y

SQL> select * from gw1;

ID                                    SID
--------------------------------------- ---------------------------------------
1                                      1
2                                      2
3                                      3
4                                      4

SQL> select * from gw2;

SID                                OLD_SID
--------------------------------------- ---------------------------------------
1                                      11
2                                      22
3                                      33

SQL> update (select gw1.sid,gw2.old_sid from gw1,gw2 where gw1.sid=gw2.sid) s set s.sid=s.old_sid;

update (select gw1.sid,gw2.old_sid from gw1,gw2 where gw1.sid=gw2.sid) s set s.sid=s.old_sid

ORA-01779: 无法修改与非键值保存表对应的列

这是因为,不能保证gw1中的一个sid对应一个唯一的gw2表的sid,也就是说gw2的sid不能保证唯一,解决的方法就是将gw2的sid加上unique约束。

SQL> alter table gw2 modify sid unique;

Table altered

SQL> update (select gw1.sid,gw2.old_sid from gw1,gw2 where gw1.sid=gw2.sid) s set s.sid=s.old_sid;

3 rows updated

这样就可以了。

相关阅读

GoldenGate不使用数据泵完成 Oracle -Oracle的双向复制 http://www.linuxidc.com/Linux/2013-10/92020.htm

使用GoldenGate的数据泵进行Oracle-Oracle的单向复制 http://www.linuxidc.com/Linux/2013-10/92019.htm

如何对 Oracle 数据泵(expdp/impdp) 进行 debug http://www.linuxidc.com/Linux/2013-06/85232.htm

Oracle 数据库导出数据泵(EXPDP)文件存放的位置 http://www.linuxidc.com/Linux/2013-05/83774.htm

Oracle 10g 数据泵分区表的导出 http://www.linuxidc.com/Linux/2012-07/66620.htm

更多Oracle相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

linux
  • MySQL5.7.11 mysqlpump 多线程逻辑备份工具
  • MySQL 5.6 XtraBackup 全量和增量的备份和
  • 基于XtraBackup 2.3.5 的 MySQL全量备份与
  • Chrome OS 现可支持简易密码解锁
  • NSA的代码遭到教授的嘲笑
  • Fedora 25将默认使用Wayland
  • Nagios 监控 SNMP 温度计
  •