我正在制作商店网站,所以我试图制作一张既有我的卖出table(Compra)
和我的衬衫(camisolas) table
的桌子。
这是我的卖(比较)表
CREATE TABLE `compra` (
`idCompra` int(11) NOT NULL,
`dataCompra` datetime DEFAULT NULL,
`valorTotal` varchar(50) DEFAULT NULL,
`utilizador_idUser` int(11) NOT NULL
);
这是我的衬衫(camisolas)桌子
CREATE TABLE `camisolas` (
`idCam` int(11) NOT NULL,
`nome` varchar(100) NOT NULL,
`preco` float NOT NULL,
`camisola_imagem` varchar(150) NOT NULL
);
这是我要制作的桌子
create table user_has_compra(
idCompra1 int primary key auto_increment,
idBuy int(11),
idCamisola int(11),
quantidade int(10)
);
ALTER TABLE `user_has_compra`
ADD CONSTRAINT `fk_compra_camisola` FOREIGN KEY (`idCamisola`) REFERENCES `camisolas` (`idCam`),
ADD CONSTRAINT `fk_compra_compra` FOREIGN KEY (`idBuy`) REFERENCES `compra` (`idCompra`)
;
这是制约因素,我正在努力制造,谢谢您的帮助。
我得到的错误是
#1005您无法创建表loja.user_has_compra(错误编号150“外键约束格式不正确”)
答案 0 :(得分:1)
在MySQL中,外键的父列需要一个索引,因此可以高效地完成查找。
在您的架构中,两个父表都缺少主键-因此您不能在子表中引用它们。
我想你想要
CREATE TABLE `compra` (
`idCompra` int(11) NOT NULL PRIMARY KEY, --> primary key constraint
`dataCompra` datetime DEFAULT NULL,
`valorTotal` varchar(50) DEFAULT NULL,
`utilizador_idUser` int(11) NOT NULL
);
CREATE TABLE `camisolas` (
`idCam` int(11) NOT NULL PRIMARY KEY, --> primary key constraint
`nome` varchar(100) NOT NULL,
`preco` float NOT NULL,
`camisola_imagem` varchar(150) NOT NULL
);
然后,您可以使用现有代码创建子表并添加约束。