2

我正在创建 6 个表。创建前 3 个表时,一切正常。但是,当我必须使用之前在创建另一个表时使用的外键时,系统会出现错误。

这些是前 3 个表:

CREATE TABLE Employee (
  EmployeeID INTEGER PRIMARY KEY NOT NULL,
  Name TEXT NOT NULL,
  Position TEXT NOT NULL,
  Salary REAL NOT NULL,
  Remarks TEXT
);

CREATE TABLE Planet (
  PlanetID INTEGER PRIMARY KEY NOT NULL,
  Name TEXT NOT NULL,
  Coordinates REAL NOT NULL
);

CREATE TABLE Has_Clearance (
  Employee INTEGER NOT NULL
    CONSTRAINT fk_Employee_EmployeeID REFERENCES Employee(EmployeeID),
  Planet INTEGER NOT NULL
    CONSTRAINT fk_Planet_PlanetID REFERENCES Planet(PlanetID),
  Level INTEGER NOT NULL,
  PRIMARY KEY(Employee, Planet)
);

然后我创建第四个表:

CREATE TABLE Shipment (
  ShipmentID INTEGER PRIMARY KEY NOT NULL,
  Date TEXT,
  Manager INTEGER NOT NULL
    CONSTRAINT fk_Employee_EmployeeID REFERENCES Employee(EmployeeID),
  Planet INTEGER NOT NULL
    CONSTRAINT fk_Planet_PlanetID REFERENCES Planet(PlanetID)
);

我收到以下错误:“数据库中已经有一个名为 'fk_Employee_EmployeeID' 的对象。无法创建约束。”

请让我知道如何在第四张表中创建 FK。

4

1 回答 1

2

约束“fk_Employee_EmployeeID”首先在表“Has_Clearance”上创建,然后您尝试创建另一个具有相同名称的约束 - 这是不允许的。只需像这样重命名第 4 个表中的约束:

CREATE TABLE Shipment ( 
ShipmentID INTEGER PRIMARY KEY NOT NULL, 
Date TEXT, 
Manager INTEGER NOT NULL CONSTRAINT fk_Maneger_EmployeeID REFERENCES Employee(EmployeeID), 
Planet INTEGER NOT NULL CONSTRAINT fk_Planet_PlanetID REFERENCES Planet(PlanetID)
);
于 2013-04-10T11:29:15.173 回答