phpmyadmin Ondelete каскад не работает - PullRequest
0 голосов
/ 17 января 2012

У меня есть три таблицы 1) product, 2) product_x, 3) product_y.Я установил первичный ключ для этих трех таблиц.Таблицы:

1) product: id, имя, product_type, созданный_at 2) product_x: id, product_id, описание, made_at 3) product_y: id, product_id, описание, созданный_at

идентификатор продуктаТаблица в таблицах product_x и product_y является внешней ссылкой из таблицы product.Если product_type = 1, запись перейдет в product_x, а если product_type = 0, запись перейдет в product_1.Итак, моя проблема в том, что я установил delete на каскаде для ссылки на внешний ключ для этих двух таблиц.Но когда я удаляю запись из product_x или product_y, соответствующий идентификатор из таблицы product не удаляется.Это означает, что удаление на каскаде не работает.Ребята, вам нужна помощь. Пожалуйста, помогите.

Вот моя таблица продуктов.

--
-- Table structure for table `product`
--

CREATE TABLE IF NOT EXISTS `product` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `code` varchar(100) NOT NULL,
  `description` text NOT NULL,
  `product_type` tinyint(4) NOT NULL COMMENT '1=pronova product,2=doctor product',
  `ingredients` varchar(200) NOT NULL,
  `directions` varchar(200) NOT NULL,
  `status` tinyint(1) NOT NULL COMMENT '0=inactive,1=active',
  `created_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=67 ;

моя таблица product_x

-

-Структура таблицы для таблицы product_x

CREATE TABLE IF NOT EXISTS `product_x` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `inventory_id` int(11) NOT NULL,
  `doctor_id` int(11) NOT NULL,
  `stock` varchar(20) NOT NULL,
  `image` varchar(50) NOT NULL,
  `small_image` varchar(100) NOT NULL,
  `sail_price` float DEFAULT NULL,
  `acquire_price` float DEFAULT NULL,
  `created_at` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `product_id` (`product`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

и моя таблица product_y

CREATE TABLE IF NOT EXISTS `product_y` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `inventory_id` int(11) NOT NULL,
  `specialization_type` int(11) NOT NULL,
  `stock` varchar(20) NOT NULL,
  `image` varchar(100) NOT NULL,
  `unit_credit_value` int(11) NOT NULL,
  `suggested_price` float NOT NULL,
  `list_price` float DEFAULT NULL COMMENT 'the price which this product sold if pronova sold this',
  `created_at` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `inventory_id` (`product`),
  KEY `FK50E07CF68B1B2BCE` (`inventory_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

1 Ответ

0 голосов
/ 17 января 2012

Убедитесь, что вы используете InnoDB, а не MyISAM . Если вы действительно не можете его контролировать, вы можете написать триггер, как описано ниже:

Как использовать каскад удаления на движке хранения MySQL MyISAM?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...