Oracle 声明外键,错误:ORA-00907:缺少右括号

Oracle 声明外键,错误:ORA-00907:缺少右括号,oracle,Oracle,我创建了一个名为sv_hardware的表(列:ip_uadrs) 现在我想创建一个表,其中ip_uAdr是外键,因此我编码: Create table sv_req_info( "server_no" number not null PRIMARY KEY, "host_ name" varchar2(100), "cur_ status" varchar2(100), "loc " varchar2(100), "buss_roles" varchar2(100), "rack _no"

我创建了一个名为sv_hardware的表(列:ip_uadrs)

现在我想创建一个表,其中ip_uAdr是外键,因此我编码:

Create table sv_req_info(
"server_no" number not null PRIMARY KEY,
"host_ name" varchar2(100),
"cur_ status"  varchar2(100),
"loc " varchar2(100),
"buss_roles"  varchar2(100),
"rack _no"  varchar2(100),
"rk U_ consump"  varchar2(100),
"Rmarks_owner"  varchar2(100),
"ip_ adrs " varchar2(100) ,
"sv_type_cat" varchar2(100),
date_added  date,
CONSTRAINT fk_sv_hardware
  FOREIGN KEY (ip_adrs)
  REFERENCES sv_hardware(ip_adrs));
出现错误
ORA-00907:缺少右括号

CREATE TABLE sv_hardware 
(
  ip_adrs   VARCHAR(10) PRIMARY KEY
)
;

CREATE TABLE sv_req_info 
(
  "server_no"      NUMBER NOT NULL PRIMARY KEY,
  "host_ name"     VARCHAR2(100),
  "cur_ status"    VARCHAR2(100),
  "loc "           VARCHAR2(100),
  "buss_roles"     VARCHAR2(100),
  "rack no"        VARCHAR2(100),
  "rk U consump"   VARCHAR2(100),
  "Rmarks_owner"   VARCHAR2(100),
  "ip_adrs"        VARCHAR2(100),
  "sv_type_cat"    VARCHAR2(100),
  date_added       DATE,
  CONSTRAINT fk_sv_hardware FOREIGN KEY ("ip_adrs") REFERENCES sv_hardware (ip_adrs)
)
;

上面的工作,对我来说似乎是引用“ip\u ADR”的问题。

问题似乎是您的专栏名为
“ip\u ADR”
(带空格),外键提到
ip\u ADR

其中一个是错的,你应该知道是哪一个


作为旁注,我强烈建议不要使用带有任何字符的标识符,这些字符会迫使您引用该标识符。不要使用空格,使用下划线。

你确定列名中需要所有这些空格吗?再举一个例子,说明为什么双引号的非标准标识符是可恶的,所有思维正常的人都会避免。我认为这不是引号,而是ip_ADR的拼写错误(一次带空格,一次不带空格),我注意到了。我在编辑过程中设法删除了那个空格。谢谢大家。是的,我永远不会使用双引号非标准标识符和空格。