Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обновление по внешнему ключу
 
 автор: Slo_Nik   (27.05.2014 в 13:09)   письмо автору
 
 

День добрый.
Есть две таблицы, "товары(mtrl_goods)" и "общие данные(mtrl_joint)".
Структура таблиц:

<?php
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";


Родительская таблица "mtrl_goods", дочерняя "mtrl_joint"

Таблицы создаются и всё работает без проблем, за одним исключением

Если я удаляю или обновляю запись (поле sh) в родительской таблице, то в дочерней записи удаляются или обновляются записи (поле sh).
Если я удаляю записи в дочерней таблице, то удаление проходит без ошибок, но если я пытаюсь обновить поле sh у одной из записей, то возникает ошибка "1452 Cannot add or update a child row: a foreign key constraint fails"

Подскажите, как можно сделать так, что бы в дочерней таблице можно было обновлять поле sh у отдельно взятой записи, но при этом при обновлении записи в родительской таблице обновлялось поле sh у всех записей в дочерней?

  Ответить