外键约束给出错误

eiee3dmh  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(480)

我正在做一个网上商店,所以我想做一个表,既有我的销售 table(Compra) 还有我的衬衫 (camisolas) table .
这是我的销售台

  1. CREATE TABLE `compra` (
  2. `idCompra` int(11) NOT NULL,
  3. `dataCompra` datetime DEFAULT NULL,
  4. `valorTotal` varchar(50) DEFAULT NULL,
  5. `utilizador_idUser` int(11) NOT NULL
  6. );

这是我的衬衫(camisolas)table

  1. CREATE TABLE `camisolas` (
  2. `idCam` int(11) NOT NULL,
  3. `nome` varchar(100) NOT NULL,
  4. `preco` float NOT NULL,
  5. `camisola_imagem` varchar(150) NOT NULL
  6. );

这就是我要做的table

  1. create table user_has_compra(
  2. idCompra1 int primary key auto_increment,
  3. idBuy int(11),
  4. idCamisola int(11),
  5. quantidade int(10)
  6. );
  1. ALTER TABLE `user_has_compra`
  2. ADD CONSTRAINT `fk_compra_camisola` FOREIGN KEY (`idCamisola`) REFERENCES `camisolas` (`idCam`),
  3. ADD CONSTRAINT `fk_compra_compra` FOREIGN KEY (`idBuy`) REFERENCES `compra` (`idCompra`)
  4. ;

这就是约束´我正在努力,谢谢你的帮助。
我得到的错误是

1005您无法创建表loja.user\u has\u compra(错误号150“外键约束格式不正确”)

iovurdzv

iovurdzv1#

在mysql中,外键的父列需要索引,因此可以高效地进行查找。
在您的架构中,两个父表都缺少一个主键,因此您不能在子表中引用它们。
我想你想要:

  1. CREATE TABLE `compra` (
  2. `idCompra` int(11) NOT NULL PRIMARY KEY, --> primary key constraint
  3. `dataCompra` datetime DEFAULT NULL,
  4. `valorTotal` varchar(50) DEFAULT NULL,
  5. `utilizador_idUser` int(11) NOT NULL
  6. );
  7. CREATE TABLE `camisolas` (
  8. `idCam` int(11) NOT NULL PRIMARY KEY, --> primary key constraint
  9. `nome` varchar(100) NOT NULL,
  10. `preco` float NOT NULL,
  11. `camisola_imagem` varchar(150) NOT NULL
  12. );

然后可以使用现有代码创建子表并添加约束。
db小提琴演示

展开查看全部

相关问题