Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle中的外键创建_Sql_Oracle - Fatal编程技术网

Sql Oracle中的外键创建

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

我尝试创建外键和主键

我的代码与表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_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)
    );