Oracle SQL Developer - 重命名属性会导致错误

时间:2016-02-18 22:00:45

标签: sql oracle attributes oracle-sqldeveloper rename

我在Oracle SQL Developer中遇到了一个奇怪的情况。我不得不重命名一些属性以匹配我学校的变量名称标准,当我执行程序时,新的属性名称似乎没有被考虑在内。

例如,我正在创建一个名为VARIANT的表:

create table VARIANT(
  ID_VAR varchar(9) not null,
  NUCL_VAR char(1) not null,
  NUCL_REF_VAR char(1) not null,
  CHROMOSOME_VAR number(2) not null,
  GENE_VAR varchar(5) not null,
  POSITION_VAR number(4) not null,
  EFFET_VAR varchar(100) not null,
  INDEX_EFF_VAR number(2, 2) not null,
  URL_DRUGBANK_VAR varchar(500) not null,

  constraint PK_VARIANT primary key(ID_VAR),
  constraint FK_URL_DRUGBANK_VAR foreign key(URL_DRUGBANK_VAR)
    references DRUG(URL_DRUGBANK_DRO),
  constraint DOM_INDEX_EFF_VAR check(INDEX_EFF_VAR > 0)
);

执行表创建请求时出现问题。 SQLDev控制台中的输出与我的代码不匹配:

create table VARIANT(
  ID_VAR varchar(9) not null,
  NUCL_VAR char(1) not null,
  NUCL_REF_VAR char(1) not null,
  CHROMOSOME_VAR number(2) not null,
  GENE_VAR varchar(5) not null,
  POSITION_VAR number(4) not null,
  EFFET_VAR varchar(100) not null,
  INDEX_EFF_VAR number(2, 2) not null,
  URL_DRUGBANK_VAR varchar(500) not null,
  constraint PK_VARIANT primary key(ID_VAR),
  constraint FK_URL_DRUGBANK_VAR foreign key(URL_DRUGBANK_VAR)
    references DROGUE(URL_DRUGBANK_DRO),
  constraint DOM_INDEX_EFF check(INDEX_EFF > 0)
)

Error report -
00904. 00000 -  "INDEX_EFF: invalid identifier"
*Cause:    
*Action:

正如您所看到的,在我的代码中,属性INDEX_EFF在下面的约束中被重命名为INDEX_EFF_VAR,但是即使属性名称已正确更改,更改似乎也未在控制台的约束输出中生效。

如果有人能帮助我弄清楚这里发生了什么,那将不胜感激!谢谢!

编辑:

找到我的出路。似乎重启SQL Developer修复了这个问题。但是,我仍然想知道是否有另一种解决方法。

3 个答案:

答案 0 :(得分:0)

正如我们在输出中可以清楚地看到的那样,没有这样的列名“INDEX_EFF”。这里可能存在某种用户错误,您可以在清除控制台输出后尝试重新运行SQL以避免任何混淆。

请注意,您可以尝试删除和重新创建表格等选项。如果您不想丢失现有数据,请按照以下步骤操作

  • 删除约束
  • 重命名列
  • 然后最后添加约束

希望这会对你有所帮助,但我不能说实际上出了什么问题。

答案 1 :(得分:0)

主键名也错误,请检查键名。

答案 2 :(得分:0)

INDEX_EFF应为INDEX_EFF_VAR