Sql Oracle中的外键创建
我尝试创建外键和主键 我的代码与表1一致Sql Oracle中的外键创建,sql,oracle,Sql,Oracle,我尝试创建外键和主键 我的代码与表1一致 CREATE TABLE Persons ( P_Id int NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) ); 表2: CREATE TABLE Orders ( O_Id int NOT NULL PRIMARY KEY, OrderNo int(10), P
CREATE TABLE Persons
(
P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
表2
:
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int(10),
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
);
错误:-ORA-00907:缺少右括号
不知道错误是什么。如果将外键定义内联到列的定义中,则不需要使用
外键
短语:
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int(10),
P_Id int REFERENCES Persons(P_Id)
);
声明FK“inline”时,不得指定外键
关键字:
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int(10),
P_Id int REFERENCES Persons(P_Id)
);
顺便说一句:在使用内联定义时,您甚至不需要列出列名,p_Id int REFERENCES Persons
就足够了
这将生成一个名为constraint的系统(例如,SYS_C0066866),因此通常最好使用一种可以指定约束名称的格式:
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int(10),
P_Id int,
constraint fk_orders_person foreign key (p_id) REFERENCES Persons(P_Id)
);
对于MySql
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int(10),
P_Id int,
FOREIGN KEY(P_Id) REFERENCES Persons(P_Id)
);
对于SQL
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int(10),
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
);