2013-04-10 302 views
1

我正在创建6个表。创建前3个表格时,一切正常。但是当我必须使用以前在创建另一个表时使用的外键时,系统会显示错误。错误:无法创建约束SQL Server 2008

这些都是3个第一表:

CREATE TABLE雇员( 雇员INTEGER PRIMARY KEY NOT NULL, 名称TEXT NOT NULL, 位置TEXT NOT NULL, 工资REAL NOT NULL, 备注文本 ) ;

CREATE TABLE行星( PlanetID INTEGER PRIMARY KEY NOT NULL, 名称TEXT NOT NULL, 坐标REAL NOT NULL );

CREATE TABLE Has_Clearance( 雇员INTEGER NOT NULL 约束fk_Employee_EmployeeID参考文献员工(雇员), 行星INTEGER NOT NULL 约束fk_Planet_PlanetID参考文献行星(PlanetID) 整数水平NOT NULL, PRIMARY KEY(雇员,行星) );

然后,我创建了4台:

CREATE TABLE出货( ShipmentID INTEGER PRIMARY KEY NOT NULL, 日期的文字, 经理INTEGER NOT NULL 约束fk_Employee_EmployeeID参考文献员工(雇员), 星球INTEGER NOT NULL约束fk_Planet_PlanetID参考行星(PlanetID) );

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

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

回答

2

首先在表“Has_Clearance”上创建约束“fk_Employee_EmployeeID”,然后尝试使用相同的名称创建另一个约束 - 这是不允许的。 只需重新命名第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) 
);