多表复合外键

时间:2013-01-05 04:14:24

标签: mysql sql foreign-keys key composite-key

我正在构建其中一个数据库的模式。我有以下两张表......

CREATE TABLE User(
userID INT AUTO_INCREMENT,
...
PRIMARY KEY(userID)
);

CREATE TABLE Tool(
toolID INT AUTO_INCREMENT,
...
PRIMARY KEY(toolID)
)

我想创建一个名为hasTool的表,它使用外键约束有两个表的两个主键。但是,除此之外,我想制作这两个字段,新表hasTool的复合键。我尝试了以下内容,但它似乎没有产生预期的行为:

CREATE TABLE gcHasCoordinates (
userID INT NOT NULL,
toolID INT NOT NULL,
PRIMARY KEY (userID , toolID ),
CONSTRAINT foreign_key_to_User FOREIGN KEY (userID) REFERENCES Coordinate(coordinateID) ,
CONSTRAINT foreign_key_to_Tool FOREIGN KEY (toolID ) REFERENCES Tool(toolID)
);

我想允许表允许多个userID或toolID实例,但不允许这两个实例,并且是表User和Tool上的现有值。

提前致谢!

2 个答案:

答案 0 :(得分:0)

问题是什么?

除外
CONSTRAINT foreign_key_to_Tool FOREIGN KEY (toolID ) REFERENCES Tool(toolID) ON DELETE CASCADE ON UPDATE CASCADE

您引用错误的表GeoCache而不是Tool的位置。它应该是我认为的工作。

编辑:以下是this

答案 1 :(得分:0)

可能您应该使用相同的数据类型。 INTINT NOT NULL是不同的类型