如果我已经提交了:
resource_id和manager_id都应该是资源表中的外键。
我显然不想在每个不合适资源的列中输入任何值
当我添加第一个关系(resource_id< - > id)时,它工作正常,但
当我添加第二个(manager_resource_id< - > id)时,它失败并显示错误:
无法创建关系[。 。 。] ALTER TABLE语句与FOREIGN KEY约束冲突[...]。表Resource,列id
中发生了冲突或者我需要将其分解为3个表吗?
资源(id,first,last)
Resource_manager(id,resource_id,manager_ID)
管理器(ID)
答案 0 :(得分:1)
只是一个提示:
<强>更新强>:
如果您的模型的员工经理多对多(有点不寻常),那么您可以这样做:
CREATE TABLE Employee
(
EmployeeID int NOT NULL
,[Name] varchar(50)
)
go
ALTER TABLE Employee ADD
CONSTRAINT PK_Employee PRIMARY KEY CLUSTERED (EmployeeID ASC)
go
CREATE TABLE Manager
(
EmployeeID int NOT NULL
,ManagerID int NOT NULL
)
go
ALTER TABLE Manager ADD
CONSTRAINT PK_Manager PRIMARY KEY CLUSTERED (EmployeeID ASC, ManagerID ASC)
,CONSTRAINT FK1_Manager FOREIGN KEY (EmployeeID) REFERENCES Employee(EmployeeID)
,CONSTRAINT FK2_Manager FOREIGN KEY (ManagerID) REFERENCES Employee(EmployeeID)
,CONSTRAINT chk_Manager CHECK (EmployeeID <> ManagerID)
go
答案 1 :(得分:0)
您必须在Manager表中创建外键。