0

很抱歉将其添加到网站上的“缺少右括号”池中,但我倾注了这些,这是仅有的两个与我的代码相似的,虽然我确实认为它们帮助我进入了正确的方向。ORA-00907 在尝试创建 CHECK 约束Oracle 时:创建包含三个 Foregin 键的复合键

我也不是数据库人员,但我别无选择,只能照顾好这个,所以任何帮助都将不胜感激。我认为我的问题似乎与“约束”所在的位置或最有可能在何处或如何添加我们的表空间引用有关。添加表空间引用是我在应用公司提供的原始脚本中唯一更改的内容。

这是公司提供的原始脚本中的一个项目(为这篇文章编辑了)(所有其他的都是相似的,并且在同一个地方有相同的错误):

CREATE TABLE my_sys_cache_entry
(
            myPVStream BLOB,
            myEntrySource VARCHAR2 (32) 
,  CONSTRAINT my_sys_cache_entry_PK PRIMARY KEY (myInsKey)
)
LOB(myPVStream) STORE AS (DISABLE STORAGE IN ROW);

这是我对它所做的最后一次更改,试图让它与我们添加的表空间引用一起工作:

CREATE TABLE my_sys_cache_entry
(
            myPVStream BLOB,
            myEntrySource VARCHAR2 (32),CONSTRAINT my_sys_cache_entry_PK PRIMARY KEY (myInsKey) TABLESPACE "MY_DYN_IDX_01"
) TABLESPACE "MY_DYN_DAT_01" 
            LOB(myPVStream) STORE AS (TABLESPACE "MY_DYN_LOB_01" DISABLE STORAGE IN ROW);

这是我得到的错误:

myEntrySource VARCHAR2 (32),CONSTRAINT my_sys_cache_entry_PK PRIMARY KEY (myInsKey) TABLESPACE "MY_DYN_IDX_01"
                                                                                                *
ERROR at line 23:
ORA-00907: missing right parenthesis  

我已经尝试了几种方法来让它工作。最初 CONSTRAINT 在它现在所在的位置下的新行上,最后一个 ) 位于其下方的一行上(参见原始示例)。我们仍然得到错误。我将 ) 放在第一个 TABLESPACE 之后的同一行,但仍然出现错误。我将所有内容从 CONSTRAINT 向前移动到最后一行,但仍然出现错误。我不记得我是否尝试使用 , 在 CONSTRAINT 之前删除。有什么想法吗?

如果没有表空间引用,我无法对其进行测试。

4

1 回答 1

1

在其中添加“使用索引”:

CONSTRAINT my_sys_cache_entry_PK PRIMARY KEY (myInsKey)
 USING INDEX TABLESPACE "MY_DYN_IDX_01"

LOB 部分很好。例如

SQL> CREATE TABLE my_sys_cache_entry
  2  (
  3              myInsKey number, myPVStream BLOB,
  4              myEntrySource VARCHAR2 (32),
  5              CONSTRAINT my_sys_cache_entry_PK PRIMARY KEY (myInsKey) using index TABLESPACE users
  6  ) TABLESPACE users
  7              LOB(myPVStream) STORE AS (TABLESPACE users DISABLE STORAGE IN ROW);

Table created.
于 2013-01-07T17:20:23.563 回答