【发布时间】:2015-05-19 13:34:55
【问题描述】:
我有 2 个不相关的表,但每个表都有相同的列类型,我称之为“somefield”
CREATE TABLE `table1` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`somefield` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `somefield` (`somefield`),
)
CREATE TABLE `table2` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`somefield` int(20) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `somefield` (`somefield`)
)
在我插入这些表中的任何一个后,我将“somefield”值插入到该表中。
CREATE TABLE `table3` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`somefield` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `somefield` (`somefield`),
CONSTRAINT `FK_table3` FOREIGN KEY (`somefield`) REFERENCES `table1` (`somefield`) ON DELETE CASCADE ON UPDATE CASCADE
)
目前,如果我删除 table1 中的一行,table3 中也会删除同一行。我可以插入 table1 并在 table3 上插入没有任何问题,但是如果我插入 table2 并尝试插入 table3 我会收到此错误
违反完整性约束:1452 无法添加或更新子行: 外键约束失败
我知道这与外键约束有关,因为它期望 'somefield' 值出现在 table1 中。我想知道的是如何添加另一个约束。
ALTER TABLE table3 ADD CONSTRAINT FK_table3 FOREIGN KEY (`somefield`) REFERENCES `table2` (`somefield`) ON DELETE CASCADE ON UPDATE CASCADE;
我需要创建 2 个表作为 table1/table3 和 table2/table3 之间的过渡吗?
【问题讨论】:
标签: mysql foreign-keys constraints