我开始尝试在web应用程序中使用InnoDB。我已经设置了一些带有外键的表,但它们的行为并不像预期的那样。下面是我的表CREATE语句:
CREATE TABLE sections (
section_id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(30),
created_at int(10) NOT NULL,
updated_at int(10) NOT NULL,
PRIMARY KEY(section_id)
) ENGINE=InnoDB;
CREATE TABLE pages (
page_id INT NOT NULL AUTO_INCREMENT,
section_idfk INT NOT NULL,
PRIMARY KEY(page_id),
FOREIGN KEY(section_idfk) REFERENCES sections(section_id)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE=InnoDB;这些表可以创建ok,我可以用数据填充它们,但是,我希望对Sections表所做的任何更改都会影响Pages表中的相应行。我尝试更改了一个节的ID,也尝试完全删除了一个节。在这两种情况下,Pages表都不受影响。
有人能看出我哪里错了吗?
任何建议都很感谢。
谢谢。
发布于 2009-10-16 14:27:20
我在MySQL查询浏览器中快速地将两个类似的表组合在一起,定义如下:
DROP TABLE IF EXISTS `test`.`sections`;
CREATE TABLE `test`.`sections` (
`section_id` int(10) unsigned NOT NULL auto_increment,
`title` varchar(30) NOT NULL,
`created_at` int(10) unsigned NOT NULL,
`updated_at` int(10) unsigned NOT NULL,
PRIMARY KEY (`section_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `test`.`pages`;
CREATE TABLE `test`.`pages` (
`page_id` int(10) unsigned NOT NULL auto_increment,
`section_idfk` int(10) unsigned NOT NULL,
PRIMARY KEY (`page_id`),
KEY `section_idfk` (`section_idfk`),
CONSTRAINT `section_idfk` FOREIGN KEY (`section_idfk`) REFERENCES `sections` (`section_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;和你发布的不完全一样,但是足够接近了。
我在节中插入一行。我在pages表中添加了一个具有匹配section_id的行。然后,我从部分中删除;它也会从页面中删除。
工作得很好。
编辑-我输入了你的创建,它也工作得很好。
https://stackoverflow.com/questions/1578217
复制相似问题