问题描述
汤姆,
我写了一个脚本来用LOB列创建一个表。我指定LOB存储参数如下:
Oracle接受了我指定的索引的名称,并使用它而不是生成名称,这是这里公认的做法。
但是,当我尝试加载表时,主键上出现重复记录错误。没有重复的记录。
当我在LOB存储上重新创建没有INDEX子句的表时,我没有错误。但是,然后我被系统生成的LOB存储索引名称 “卡住”,这与我们的实践不符。
你能给我解释一下这个 “逻辑” 吗?
我写了一个脚本来用LOB列创建一个表。我指定LOB存储参数如下:
CREATE TABLE CONFIGURATION (CFG_ID NUMBER(19,0) NOT NULL ENABLE, CFG_CONTEXT_ID VARCHAR2(255) NOT NULL ENABLE, CFG_DATE TIMESTAMP (6) NOT NULL ENABLE, CFG_DESC VARCHAR2(255), ITM_TYPE VARCHAR2(255) NOT NULL ENABLE, CFG_KEY VARCHAR2(255) NOT NULL ENABLE, CFG_MAX BLOB, CFG_MIN BLOB, CFG_NAME VARCHAR2(255), CFG_PLURAL NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, CFG_REQUIRED NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, CFG_SENSITIVE NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, CFG_TYPE VARCHAR2(255) NOT NULL ENABLE, VERSION NUMBER(19,0), CONSTRAINT PK_CONFIGURATION PRIMARY KEY(CFG_ID) USING INDEX (CREATE UNIQUE INDEX IDX_PK_CONFIGURATION ON CONFIGURATION(CFG_ID)) ) LOB (CFG_MAX) STORE AS LOBCFG_MAX (INDEX IDX_LOB_CONFIGURATION_01) LOB (CFG_MIN) STORE AS LOBCFG_MIN (INDEX IDX_LOB_CONFIGURATION_02) ;复制
Oracle接受了我指定的索引的名称,并使用它而不是生成名称,这是这里公认的做法。
但是,当我尝试加载表时,主键上出现重复记录错误。没有重复的记录。
当我在LOB存储上重新创建没有INDEX子句的表时,我没有错误。但是,然后我被系统生成的LOB存储索引名称 “卡住”,这与我们的实践不符。
你能给我解释一下这个 “逻辑” 吗?
专家解答
你需要给我们一个完整的测试用例 -- 我不能复制
SQL> CREATE TABLE t 2 (CFG_ID NUMBER(19,0) NOT NULL ENABLE, 3 CFG_MAX BLOB, 4 CFG_MIN BLOB, 5 CFG_NAME VARCHAR2(255), 6 CONSTRAINT t_pk PRIMARY KEY(CFG_ID) 7 USING INDEX 8 (CREATE UNIQUE INDEX t_pk ON t(CFG_ID)) 9 ) 10 LOB (CFG_MAX) STORE AS LOBCFG_MAX (INDEX IDX_LOB_CONFIGURATION_01) 11 LOB (CFG_MIN) STORE AS LOBCFG_MIN (INDEX IDX_LOB_CONFIGURATION_02) 12 ; Table created. SQL> SQL> insert into t 2 values (1,utl_raw.cast_to_Raw('qweqweqwe'),utl_raw.cast_to_Raw('qweqweqwe'),'demo'); 1 row created. SQL> SQL> insert into t 2 values (2,utl_raw.cast_to_Raw('qweqweqwe'),utl_raw.cast_to_Raw('qweqweqwe'),'demo'); 1 row created. SQL> SQL> insert into t 2 values (3,utl_raw.cast_to_Raw('qweqweqwe'),utl_raw.cast_to_Raw('qweqweqwe'),'demo'); 1 row created. SQL> SQL> insert into t 2 values (4,utl_raw.cast_to_Raw('qweqweqwe'),utl_raw.cast_to_Raw('qweqweqwe'),'demo'); 1 row created. SQL> SQL> insert into t 2 values (1,utl_raw.cast_to_Raw('qweqweqwe'),utl_raw.cast_to_Raw('qweqweqwe'),'demo'); insert into t * ERROR at line 1: ORA-00001: unique constraint (MCDONAC.T_PK) violated复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。