- 浏览: 786506 次
- 性别:
- 来自: 广州
文章分类
最新评论
insert提示IGNORE_ROW_ON_DUPKEY_INDEX
转自:http://space.itpub.net/18922393/viewspace-752123
在 insert into tablea ...select * from tableb中,如果存在唯一约束,会导致整个insert操作失败。使用IGNORE_ROW_ON_DUPKEY_INDEX提示,会忽略唯一约束冲突,回滚当前行,继续完成其他行的插入。
1,注意:
(1)如下三个提示CHANGE_DUPKEY_ERROR_INDEX, IGNORE_ROW_ON_DUPKEY_INDEX, RETRY_ON_ROW_CHANGE与其他提示不同,特别之处在于存在“语义效果(semantic effect)”。
“semantic effect”指在违反以下规则时该提示会导致错误信息:
*如果指定了索引名称,该索引必须存在且唯一;否则会导致ORA-38913错误;
*如果指定索引,必须指定一个索引。如果未指定索引,会导致ORA-38912错误;如果指定了多个索引,会导致ORA-38915错误。
*不能同时指定CHANGE_DUPKEY_ERROR_INDEX和IGNORE_ROW_ON_DUPKEY_INDEX提示;否则会导致ORA-38915错误。
提示CHANGE_DUPKEY_ERROR_INDEX有两种用法,一种是指定索引的名称,另一种是指明所有构成索引的列。
需要注意的是,这个HINT只对唯一索引生效,而对唯一约束无效:
(2)与其他提示相同,存在语法错误的提示将被忽略.
(3)该提示仅适用于单个表的insert操作。
2,测试:
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected asmh@boclink
SQL>
SQL> drop table test;
Table dropped
SQL> create table test(x int,y int);
Table created
SQL> insert into test values(1,1);
1 row inserted
SQL> insert into test values(2,2);
1 row inserted
SQL> insert into test values(3,3);
1 row inserted
SQL> commit;
Commit complete
SQL> create unique index uidx_test_x on test(x);
Index created
SQL> drop table test2;
Table dropped
SQL> create table test2
2 as
3 select * from test;
Table created
SQL> insert into test2 values(4,4);
1 row inserted
SQL> insert into test2 values(5,5);
1 row inserted
SQL> commit;
Commit complete
SQL> insert into test
2 select * from test2;
insert into test
select * from test2
ORA-00001: 违反唯一约束条件 (MH.UIDX_TEST_X)
SQL> rollback;
Rollback complete
SQL> insert into test
2 select * from test2;
insert into test
select * from test2
ORA-00001: 违反唯一约束条件 (MH.UIDX_TEST_X)
SQL> commit;
Commit complete
SQL> insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(test(x)) */into test
2 select * from test2;
2 rows inserted
SQL> commit;
Commit complete
SQL> select * from test;
X Y
--------------------------------------- ---------------------------------------
1 1
2 2
3 3
4 4
5 5
SQL>
SQL>
SQL> insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(test,uidx_test_x) */into test
2 select * from test2;
0 rows inserted
SQL> commit;
Commit complete
转自:http://space.itpub.net/18922393/viewspace-752123
在 insert into tablea ...select * from tableb中,如果存在唯一约束,会导致整个insert操作失败。使用IGNORE_ROW_ON_DUPKEY_INDEX提示,会忽略唯一约束冲突,回滚当前行,继续完成其他行的插入。
1,注意:
(1)如下三个提示CHANGE_DUPKEY_ERROR_INDEX, IGNORE_ROW_ON_DUPKEY_INDEX, RETRY_ON_ROW_CHANGE与其他提示不同,特别之处在于存在“语义效果(semantic effect)”。
“semantic effect”指在违反以下规则时该提示会导致错误信息:
*如果指定了索引名称,该索引必须存在且唯一;否则会导致ORA-38913错误;
*如果指定索引,必须指定一个索引。如果未指定索引,会导致ORA-38912错误;如果指定了多个索引,会导致ORA-38915错误。
*不能同时指定CHANGE_DUPKEY_ERROR_INDEX和IGNORE_ROW_ON_DUPKEY_INDEX提示;否则会导致ORA-38915错误。
提示CHANGE_DUPKEY_ERROR_INDEX有两种用法,一种是指定索引的名称,另一种是指明所有构成索引的列。
需要注意的是,这个HINT只对唯一索引生效,而对唯一约束无效:
(2)与其他提示相同,存在语法错误的提示将被忽略.
(3)该提示仅适用于单个表的insert操作。
2,测试:
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected asmh@boclink
SQL>
SQL> drop table test;
Table dropped
SQL> create table test(x int,y int);
Table created
SQL> insert into test values(1,1);
1 row inserted
SQL> insert into test values(2,2);
1 row inserted
SQL> insert into test values(3,3);
1 row inserted
SQL> commit;
Commit complete
SQL> create unique index uidx_test_x on test(x);
Index created
SQL> drop table test2;
Table dropped
SQL> create table test2
2 as
3 select * from test;
Table created
SQL> insert into test2 values(4,4);
1 row inserted
SQL> insert into test2 values(5,5);
1 row inserted
SQL> commit;
Commit complete
SQL> insert into test
2 select * from test2;
insert into test
select * from test2
ORA-00001: 违反唯一约束条件 (MH.UIDX_TEST_X)
SQL> rollback;
Rollback complete
SQL> insert into test
2 select * from test2;
insert into test
select * from test2
ORA-00001: 违反唯一约束条件 (MH.UIDX_TEST_X)
SQL> commit;
Commit complete
SQL> insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(test(x)) */into test
2 select * from test2;
2 rows inserted
SQL> commit;
Commit complete
SQL> select * from test;
X Y
--------------------------------------- ---------------------------------------
1 1
2 2
3 3
4 4
5 5
SQL>
SQL>
SQL> insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(test,uidx_test_x) */into test
2 select * from test2;
0 rows inserted
SQL> commit;
Commit complete
发表评论
-
Oracle 10g 的clusterware 32位 下载地址
2013-04-19 23:03 1215Oracle 10g 的clusterware 32位 下载地 ... -
oracle 分析函数 RANK()
2013-04-11 00:05 1101RANK()既是一个聚合函数,也是一个分析函数 其具体的语法 ... -
oracle 分析函数
2013-04-09 23:25 1178分析函数是用于计算一组中多行的聚合值,与聚合函数的区别在于聚合 ... -
批量执行 bulk collect与forall用法
2013-04-08 23:49 1395BULK COLLECT 子句会批量检 ... -
pl/sql集合类型
2013-03-26 10:12 1577--集合类型 /* 单行单列的数据,使用标量变量 单行 ... -
oracle 行链接与行迁移
2013-03-16 01:06 1105表里的一行对于一个数据块太大的情况有二种(一行在一个数据块里放 ... -
oracle Health Monitor
2013-01-20 00:02 1614About Health Monitor Beginning ... -
oracle moving window size与 AWR retention period关系
2013-01-19 15:58 8489转自: http://tomszrp.itpub.net/po ... -
oracle 11g新特性Flashback data archive
2013-01-09 22:52 30871. 什么是flashback data archive F ... -
RMAN List和report 命令
2012-12-25 00:07 2901LIST 命令 使用RMAN LIST 命令显示有关资料档案库 ... -
oracle ASM中ASM_POWER_LIMIT参数
2012-12-24 23:46 6432ASM_POWER_LIMIT 该初始化参数用于指定ASM例程 ... -
oracle I/O 从属进程
2012-12-24 23:24 1430I/O 从属进程 I/O从 ... -
easy connect 之 ORA-12154: TNS: 无法解析指定的连接标识符
2012-12-19 23:43 5643用easy connect连接出现“tns无法解析指定的连接标 ... -
Flashback Database --闪回数据库
2012-12-19 23:38 1393Flashback 技术是以Undo segment中的内容为 ... -
Oracle 11g新特性:Automatic Diagnostic Repository
2012-12-19 22:35 1396Oracle Database 11g的FDI(Fault D ... -
RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系
2012-12-19 22:09 2702RMAN配置中通道(CHANNEL)相 ... -
oracle 空间RESUMABLE
2012-12-14 22:05 3062空间RESUMABLE操作 转 Oracle从9i开始 ... -
oracle 创建视图 with check option
2012-12-13 23:14 1533我们来看下面的例子: create or replace vi ... -
flashback transaction闪回事务查询
2012-11-26 22:00 1505闪回事务查询有别于闪回查询的特点有以下3个: (1) ... -
pl/sql连不上oracle数据库
2012-11-21 22:56 3752pl/sql 9.2版本连不上oracle数据库 当系统安装 ...
相关推荐
Oracle 11.2安装是数据库管理员和开发者在学习Oracle技术时的重要步骤。这个文档主要指导初学者在Linux系统上安装Oracle 11.2数据库的详细过程,涵盖了操作系统准备、依赖包安装、用户和权限配置、内核参数调整以及...
然而,如果在脚本开始时调用`ignore_user_abort(true)`,脚本就会忽略用户的断开连接,继续执行直至完成。 例如,下面的代码演示了一个简单的计划任务,它每半小时将当前时间写入到`time_task.txt`文件中: ```php...
当我们谈论“ignore_obj.rar_return”时,这可能是某种特定情况下的命名约定,暗示着某个函数或者方法可能被设计用来忽略某个对象并返回一个特定的值。 在C语言中,如`image_browser_1.c`和`ignore_obj.c`这两个源...
本文将详细介绍ignore_user_abort函数的使用方法,并提供实例帮助理解其作用。 首先,我们来了解ignore_user_abort函数的原型: ```php int ignore_user_abort([bool $setting]); ``` ignore_user_abort函数允许...
在本例中,提到的核心函数是 `ignore_user_abort()`。 `ignore_user_abort()` 函数是PHP中的一个控制函数,它用于设置当用户中止页面请求时,是否中断脚本的执行。当该函数被设置为 `true` 时,即使客户端断开了...
标题"ignore_0xff.rar_scale"暗示了我们正在处理一个与忽略特定字节(在这种情况下是0xff)相关的压缩文件,可能涉及到某种特定的编码或解码算法优化。描述中的"sf_estim.h"表明文件包含了关于“scale factor ...
因此,在实际开发中,应该谨慎处理这种情况,例如提供一个明显的退出按钮或提示。 压缩包中的`ignore_home_key.txt`可能包含了具体的代码示例或者更详细的解释。通过分析这个文本文件,开发者可以更好地理解和实现...
hibernate3.0连接SQLServer代码简单例子,单表t_user...)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
它的语法是 `int ignore_user_abort([int setting])`,其中 `setting` 参数是可选的,用于设置新的连接中断处理模式。返回值是一个整数,表示当前的设置状态。如果设置为 `true` 或非零值,PHP会忽略用户的中断请求...
校友录系统(ASP.NET 3.5实现)USE [friends] ...)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
2018最全的开户行行号,支行,网点号。...)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
留言本系统(ASP.NET 3.5实现)USE [guestbook] ...)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
Bootstrap_FileUpload4.3.9+Drapper+IOC+MVC ,包含...)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
USE ...)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO
FIT_IGNORE_TIMING = ON; DEMOTE_SPECIFIC_LCELL_ASSIGNMENTS_TO_LAB_ASSIGNMENTS = OFF; IGNORE_LOCAL_ROUTING_ASSIGNMENTS = OFF; IGNORE_DEVICE_ASSIGNMENTS = OFF; IGNORE_LC_ASSIGNMENTS = OFF; IGNORE_...