SQL-缺少右括号

SQL-缺少右括号,sql,oracle,oracle10g,oracle11g,Sql,Oracle,Oracle10g,Oracle11g,我试图在Oracle11g中执行此脚本,但出现以下错误,我不知道我在哪里遗漏了这个偏执,或者是什么错误,请帮助我解决这个问题 脚本: CREATE TABLE User_Role ( user_role_id INT NOT NULL , Users_user_id INT FOREIGN KEY REFERENCES Users(user_id), User_Types_user_type VARCHAR(20) FOREIGN KEY REFERENCES User_

我试图在Oracle11g中执行此脚本,但出现以下错误,我不知道我在哪里遗漏了这个偏执,或者是什么错误,请帮助我解决这个问题

脚本:

CREATE TABLE User_Role ( 
  user_role_id INT  NOT NULL  , 
  Users_user_id INT  FOREIGN KEY REFERENCES Users(user_id), 
  User_Types_user_type VARCHAR(20) FOREIGN KEY REFERENCES User_Types(user_type),  
  PRIMARY KEY(user_role_id) 
)
错误:

ORA-00907:右括号缺失


删除
外键
子句。将
CREATE TABLE
语句重写如下:

CREATE TABLE User_Role ( 
      user_role_id         INT  NOT NULL  , 
      Users_user_id        INT  REFERENCES Users(user_id), 
      User_Types_user_type VARCHAR(20) REFERENCES User_Types(user_type),  
      PRIMARY KEY(user_role_id) 
    )
  CREATE TABLE User_Role1 ( 
      user_role_id         INT  NOT NULL  , 
      Users_user_id        INT  , 
      User_Types_user_type VARCHAR(20) ,  
      constraint PK_YourTable PRIMARY KEY(user_role_id), 
      constraint FK_Table_1 foreign key(Users_user_id) REFERENCES Users(user_id),
      constraint FK_Table_2 foreign key(User_Types_user_type) REFERENCES User_Types(user_type)
    )
在这种情况下,约束名称将由Oracle生成。如果您想给他们提供更有意义的名称,您可以编写
createtable
语句,如下所示:

CREATE TABLE User_Role ( 
      user_role_id         INT  NOT NULL  , 
      Users_user_id        INT  REFERENCES Users(user_id), 
      User_Types_user_type VARCHAR(20) REFERENCES User_Types(user_type),  
      PRIMARY KEY(user_role_id) 
    )
  CREATE TABLE User_Role1 ( 
      user_role_id         INT  NOT NULL  , 
      Users_user_id        INT  , 
      User_Types_user_type VARCHAR(20) ,  
      constraint PK_YourTable PRIMARY KEY(user_role_id), 
      constraint FK_Table_1 foreign key(Users_user_id) REFERENCES Users(user_id),
      constraint FK_Table_2 foreign key(User_Types_user_type) REFERENCES User_Types(user_type)
    )

我认为您需要首先定义列,然后添加
外键
约束,其方式与添加
主键
约束的方式相同,如下所示:

    CREATE TABLE User_Role ( 
       user_role_id INT  NOT NULL  , 
       Users_user_id INT, 
       User_Types_user_type VARCHAR(20),
       FOREIGN KEY (Users_user_id) REFERENCES Users(user_id),
       FOREIGN KEY (User_Types_user_type) REFERENCES User_Types(user_type), 
       PRIMARY KEY(user_role_id) 
     )

删除int的大小并重新编译

示例:-

integer (20) not null
integer not null
User_Types_user_type VARCHAR(20),
User_Types_user_type VARCHAR,
您可以内联指定外键,只需删除
外键
关键字:

CREATE TABLE User_Role 
(
  user_role_id           INT NOT NULL  , 
  Users_user_id          INT         REFERENCES Users, 
  User_Types_user_type   VARCHAR(20) REFERENCES User_Types,  
  PRIMARY KEY(user_role_id) 
);
SQLFiddle示例:

在“引用”部分列出主键列是可选的。如果愿意,还可以编写
引用用户(用户id)

这种格式还有一个缺点,即约束名称将由Oracle生成(名称无意义)。为了能够正确地为外键指定约束名称,您需要使用接受答案中的语法。

示例中没有
整数(20)
。没有大小的
VARCHAR
在Oracle中无效。