首页 >

ORA-01779的处理方法(更新数据处理)

数据库|mysql教程ORA-01779的处理方法(更新数据处理)
Oracle错误代码,ORA-01779的处理方法(更新数据
数据库-mysql教程
开发博客源码,ubuntu使用蓝牙耳机,tomcat配置uft-8,家具白色爬虫,增删查改系统php,seo_ccccxzylzw
Oracle中试图对一个子查询进行更新时可能会出现ORA-01779错误。该错误的内容为: ORA-01779: cannot modify a column which maps
幸运28开奖网站源码,vscode智能,ubuntu 如何yum,tomcat转义,dbm和sqlite,用代理服务器抓取数据,稳定微信插件,tp框架不用前端,爬虫星球,php中之美,湖南seo技术,橘色商城网站是真的吗,网页信息抓取源代码,开单本模板,phpcms 页面无法访问,绩效管理系统 源代码,小程序商城lzw
php一元众筹源码,vscode下载的插件网址,ubuntu 网络实验,tomcat无端口访问,卧室床上爬虫,rc4加密算法 php,拱墅seo推广服务哪家好,班级网站模板html代码lzw

Oracle中试图对一个子查询进行更新时可能会出现ORA-01779错误。该错误的内容为:

ORA-01779: cannot modify a column which maps to a non-key-preserved table例如,使用以下的更新查询就会出现该错误。

这个错误的意思是,子查询的结果中,更新数据源(test2)的内容不唯一,导致被更新对象(test1)中的一行可能对应数据源(test2)中的多行。 本例中,,test2表的id不唯一,因此test2表中可能存在id相同但是num不相同的数据,这种数据是无法用来更新 test1 的。

解决方法就是保证数据源的唯一性,例如本例中可以为test2.id创建一个唯一索引:

CREATE UNIQUE INDEX test2_idx_001 ON test2 (id);

之后上面的更新就可以执行了。

另外也可以强制 Oracle 执行,方法是加上 BYPASS_UJVC 注释。

BYPASS_UJVC的作用是跳过Oracle的键检查。 这样虽然能够执行了,但是如果test2中存在不唯一的数据,test1就会被更新多次而导致意想不到的结果。


ORA-01779的处理方法(更新数据处理)
  • OGG-00446 ERROR: Could not find archived log
  • OGG-00446 ERROR: Could not find archived log | OGG-00446 ERROR: Could not find archived log ...

    ORA-01779的处理方法(更新数据处理)
  • ORA-32004: obsolete and/or deprecated parameter(s) specified
  • ORA-32004: obsolete and/or deprecated parameter(s) specified | ORA-32004: obsolete and/or deprecated parameter(s) specified ...

    ORA-01779的处理方法(更新数据处理)
  • Oracle ORA-01704: string literal too long问题分析
  • Oracle ORA-01704: string literal too long问题分析 | Oracle ORA-01704: string literal too long问题分析 ...