Составной Внешний Ключ В MySQL Вставить Не В Состоянии
У меня есть 2 таблицы с составным внешним ключом между 2. Когда я пытаюсь вставить строку в дочернюю таблицу, я получаю ошибку ограничения, даже если значения существуют в родительской таблице.
Вот обзор родительской таблицы:
CREATE TABLE `residual_reports` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`processor` enum('1','2','3') NOT NULL,
`posting_date` date NOT NULL DEFAULT '0000-00-00',
`approved_on` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `posting_date_2` (`processor`,`posting_date`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Дочерняя таблица имеет внешний ключ к столбцам процессора и даты учета:
CREATE TABLE `residual_data` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`mid` varchar(29) DEFAULT NULL,
`processor` enum('1','2','3') NOT NULL,
`posting_date` date NOT NULL,
......
PRIMARY KEY (`id`),
KEY `residual_data_ibfk_1` (`processor`,`posting_date`),
CONSTRAINT `residual_data_ibfk_1` FOREIGN KEY (`processor`, `posting_date`) REFERENCES `residual_reports` (`processor`, `posting_date`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Я вставил строку в таблицу residual_reports с processor = 1 и posting_date = 2010-03-10.
Когда я пытаюсь вставьте в таблицу residual_data с processor = 1 и posting_date = 2010-03-10.
INSERT INTO `residual_data`(processor,posting_date) VALUES ('1','2010-03-10');
Я получаю:
[Err] 1452-не удается добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (residual_data
, ограничение residual_data_ibfk_1
внешний ключ (processor
, posting_date
) ссылки residual_reports
(processor
, posting_date
) на каскаде обновлений)
Проверено, что значения определенно существуют в родительской таблице, но все еще получают ошибки ограничения внешнего ключа. Есть ли что-то, что я упускаю с составным иностранным языком ключ?
3 ответа:
Я бы заподозрил перечисление, вы что-то сделали с ними потом? Вы изменили свои ценности или что-то в этом роде?
Ваш код работает для меня как есть. Возможно ли, что изменения в
residual_reports
еще не были зафиксированы?
Какую версию Mysql вы используете? Похоже, что у них и раньше были подобные проблемы с перечислением значений http://bugs.mysql.com/bug.php?id=24985