3

我正在构建我的一个数据库的架构。我有以下两个表...

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

我想允许表允许用户 ID 或工具 ID 的多个实例,但不能同时允许两者,并且是表用户和工具上的现有值。

提前致谢!

4

2 回答 2

0

问题是什么?

除了

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

您在哪里引用不正确的表 GeoCache 而不是 Tool。我认为它应该可以工作。

编辑:这里看看这个

于 2013-01-05T04:24:51.437 回答
0

可能,您应该使用相同的数据类型。INT并且INT NOT NULL是不同的类型

于 2013-02-28T05:38:36.780 回答