SQL-缺少右括号
我试图在Oracle11g中执行此脚本,但出现以下错误,我不知道我在哪里遗漏了这个偏执,或者是什么错误,请帮助我解决这个问题 脚本: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_
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中无效。