我试图执行在Oracle 11g中此脚本,并收到以下错误,我不知道我在哪里丢失的paranthesis或什么是错误好心帮我想出解决办法。
脚本:
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:缺少右parenthesi
删除FOREIGN KEY
子句。 重写你的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
声明如下:
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)
)
我认为你需要首先定义列,然后添加FOREIGN KEY
约束以非常相似的方式要添加PRIMARY KEY
如下限制:
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)
)
您可以在线指定的外键,你只需要删除foreign key
关键字:
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例如: http://sqlfiddle.com/#!4/4ca9f/1
清单“参考”部分中的主键列是可选的。 如果你愿意,你也可以写REFERENCES Users(user_id)
这种格式也有约束的名字会由Oracle生成的缺点(与无意义的名称)。 为了能够为外键正确指定约束的名字,你需要使用语法接受的答案。
除去int的长度并重新编译
例如: -
integer (20) not null
integer not null
User_Types_user_type VARCHAR(20),
User_Types_user_type VARCHAR,