我在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修复了这个问题。但是,我仍然想知道是否有另一种解决方法。
答案 0 :(得分:0)
正如我们在输出中可以清楚地看到的那样,没有这样的列名“INDEX_EFF”。这里可能存在某种用户错误,您可以在清除控制台输出后尝试重新运行SQL以避免任何混淆。
请注意,您可以尝试删除和重新创建表格等选项。如果您不想丢失现有数据,请按照以下步骤操作
希望这会对你有所帮助,但我不能说实际上出了什么问题。
答案 1 :(得分:0)
主键名也错误,请检查键名。
答案 2 :(得分:0)
INDEX_EFF应为INDEX_EFF_VAR