【问题标题】:Foreign Key creation in Oracle [duplicate]Oracle中的外键创建[重复]
【发布时间】:2014-04-28 17:00:05
【问题描述】:

我尝试创建外键和主键

Table1我的代码没问题

CREATE TABLE Persons
(
P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

Table2

CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int(10),
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
);

错误:-ORA-00907:缺少右括号

不知道是什么错误。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    当您声明 FK“内联”时,您不得指定 foreign key 关键字:

    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 就足够了。

    这将生成一个系统命名的约束(例如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)
    );
    

    【讨论】:

      【解决方案2】:

      如果您在列定义中内联外键定义,则不需要foreign key 短语:

      CREATE TABLE Orders
      (
      O_Id int NOT NULL PRIMARY KEY,
      OrderNo int(10),
      P_Id int REFERENCES Persons(P_Id)
      );
      

      【讨论】:

        【解决方案3】:

        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)
            );
        

        Check Manual

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-24
          相关资源
          最近更新 更多