Update cascade -- не срабатывает?

tonna
Дата: 11.02.2013 16:40:04
Здравствуйте, господа. Я хочу воспользоваться возможностью обновления информации в дочерней таблице(связанной с родительской внешним ключом).

Вот дамп 3 таблиц.

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


CREATE TABLE IF NOT EXISTS `customer` (
`id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `product` (
`category` int(11) NOT NULL,
`id` int(11) NOT NULL,
`price` decimal(10,0) DEFAULT NULL,
PRIMARY KEY (`category`,`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `product_order` (
`no` int(11) NOT NULL AUTO_INCREMENT,
`product_category` int(11) NOT NULL,
`product_id` int(11) NOT NULL,
`customer_id` int(11) NOT NULL,
PRIMARY KEY (`no`),
KEY `product_category` (`product_category`,`product_id`),
KEY `customer_id` (`customer_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

INSERT INTO `product` (`category`, `id`, `price`) VALUES
(1, 1, '45'),
(1, 2, '56');

INSERT INTO `customer` (`id`) VALUES
(1),
(2);

INSERT INTO `product_order` (`no`, `product_category`, `product_id`, `customer_id`) VALUES
(1, 1, 1, 1);

ALTER TABLE `product_order`
ADD CONSTRAINT `product_order_ibfk_1` FOREIGN KEY (`product_category`, `product_id`) REFERENCES `product` (`category`, `id`) ON UPDATE CASCADE,
ADD CONSTRAINT `product_order_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`);


И на команде

UPDATE `blog`.`customer` SET `id` = '3' WHERE `customer`.`id` =1 -- вылетает ошибка.

Ответ MySQL: Документация
#1451 - Cannot delete or update a parent row: a foreign key constraint fails (`blog`.`product_order`, CONSTRAINT `product_order_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`))









_____________________________________
С уважением, Ваш Антон.
tonna
Дата: 11.02.2013 16:50:31
от невнимательности ошибка была

ALTER TABLE `product_order`
ADD CONSTRAINT `product_order_ibfk_1` FOREIGN KEY (`product_category`, `product_id`) REFERENCES `product` (`category`, `id`) ON UPDATE CASCADE,
ADD CONSTRAINT `product_order_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`) ON UPDATE CASCADE;
tanglir
Дата: 12.02.2013 05:13:39
tonna, а какая версия мускля? На 5.0.67 отрабатывает правильно.