暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle LOB存储参数

askTom 2018-07-05
331

问题描述

汤姆,

我写了一个脚本来用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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论