我在这里打招呼,所有我想要做的就是插入一个外键的表字段,请看看这两个表:
表 Categorie
CREATE TABLE IF NOT EXISTS `categorie` (
`id_cat` int(2) NOT NULL AUTO_INCREMENT,
`nom_cat` varchar(20) NOT NULL,
PRIMARY KEY (`id_cat`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
和表 Annonce
CREATE TABLE IF NOT EXISTS `annonce` (
`id_annonce` int(6) NOT NULL AUTO_INCREMENT,
`titre` varchar(30) NOT NULL,
`description` varchar(255) NOT NULL,
`tarif` float NOT NULL,
`deplacement` int(2) NOT NULL,
`date_creation` date NOT NULL,
`date_expiration` date NOT NULL,
`image` varchar(255) NOT NULL,
`id_cat` int(2) DEFAULT NULL,
PRIMARY KEY (`id_annonce`),
KEY `id_cat` (`id_cat`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
手动链接外键id_cat后(ON UPDATE SET NULL ON DELETE CASCADE)这就是db的样子
将数据插入Categorie表后,它看起来像这样
但不幸的是我无法执行此查询:
INSERT INTO annonce (id_annonce, titre, description, tarif, deplacement,
date_creation, date_expiration,id_cat)
VALUES('','anything','anything',2,3,'2017-04-01','2017-04-01',2)
错误说:
1452 - 无法添加或更新子行:外键约束失败(lametcom.annonce,CONSTRAINT annonce_ibfk_2 FOREIGN KEY(id_cat)REFERENCES annonce(id_cat)ON DELETE SET NULL ON UPDATE CASCADE)
任何人都可以帮忙,对我可怜的英语感到抱歉,我希望你能理解我的意思
1 回答
您的外键约束是错误的 . 你有
但它应该是:
外键约束中的表名必须是要链接的表 .