我正在构建其中一个数据库的模式。我有以下两张表......
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上的现有值。
提前致谢!
答案 0 :(得分:0)
问题是什么?
除外
CONSTRAINT foreign_key_to_Tool FOREIGN KEY (toolID ) REFERENCES Tool(toolID) ON DELETE CASCADE ON UPDATE CASCADE
您引用错误的表GeoCache而不是Tool的位置。它应该是我认为的工作。
编辑:以下是this
答案 1 :(得分:0)
可能您应该使用相同的数据类型。 INT
和INT NOT NULL
是不同的类型