Есть две таблицы, "товары(mtrl_goods)" и "общие данные(mtrl_joint)".
Структура таблиц:
Код: Выделить всё
CREATE TABLE IF NOT EXISTS `mtrl_goods`(
`id_goods` INT(3) NOT NULL AUTO_INCREMENT,
# разные поля
`sh` INT(2) DEFAULT NULL,
# разные поля
PRIMARY KEY(`id_goods`),
KEY `sh`(`sh`)
)ENGINE=InnoDB DEFAULT CHARSET="utf8";
CREATE TABLE IF NOT EXISTS `mtrl_joint`(
`id_joint` INT(3) NOT NULL AUTO_INCREMENT,
# разные поля
`sh` INT(2) DEFAULT NULL,
`id_goods` INT(3) NULL, #id товара
PRIMARY KEY(`id_joint`),
KEY `sh`(`sh`)
FOREIGN KEY (`id_goods`) REFERENCES `mtrl_goods`(`id_goods`)
ON DELETE CASCADE,
FOREIGN KEY (`sh`) REFERENCES `mtrl_goods`(`sh`)
ON UPDATE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET="utf8";
Таблицы создаются и всё работает без проблем, за одним исключением
Если я удаляю или обновляю запись (поле sh) в родительской таблице, то в дочерней записи удаляются или обновляются записи (поле sh).
Если я удаляю записи в дочерней таблице, то удаление проходит без ошибок, но если я пытаюсь обновить поле sh у одной из записей, то возникает ошибка "1452 Cannot add or update a child row: a foreign key constraint fails"
Подскажите, как можно сделать так, что бы в дочерней таблице можно было обновлять поле sh у отдельно взятой записи, но при этом при обновлении записи в родительской таблице обновлялось поле sh у всех записей в дочерней?