phpmyadmin Ondelete级联不起作用

时间:2012-01-17 06:10:47

标签: mysql phpmyadmin

我有三个表1)产品,2)product_x,3)product_y。我为这三个表设置了主键。表格是

1)产品:id,name,product_type,created_at 2)product_x:id,product_id,description,created_at 3)product_y:id,product_id,description,created_at

product_x和product_y表中的product_id表是表产品的外部引用。如果product_type = 1,则输入将转至product_x,如果product_type = 0,则转至product_1。所以我的问题是我在cascade上为这两个表的外键引用设置了删除。但是当我从product_x或product_y中删除条目时,不会删除产品表中的相应ID。这意味着在不工作时删除级联。我需要你们的帮助,请帮忙。

这是我的产品表。

--
-- 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 :(得分:0)

检查以确保您使用的是 InnoDB而不是MyISAM ,如果您真的无法控制它,可以按照以下说明编写触发器:

How to use delete cascade on MySQL MyISAM storage engine?