通过关闭外键检查,您可以在架构内以任意顺序创建表。
例如,下面我创建一个BannedUsers表,在Users表上创建一个外键,但尚未创建Users表。
之后,请务必再次启用外键检查。
以下示例已使用InnoDB引擎在MySQL 5.5.31数据库上进行了测试。
SET FOREIGN_KEY_CHECKS=0;
CREATE TABLE IF NOT EXISTS `BannedUsers` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_id` bigint(10) unsigned NOT NULL,
`created` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `user_id` (`user_id`),
KEY `FK_BannedUsers_Users` (`user_id`),
CONSTRAINT `FK_BannedUsers_Users` FOREIGN KEY (`user_id`) REFERENCES `Users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS `Users` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(254) COLLATE utf8_unicode_ci NOT NULL,
`username` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
`firstname` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL,
`lastname` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL,
`created` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
SET FOREIGN_KEY_CHECKS=1;
我也不确定。我从http://code.google.com/p/hss/获取了此架构 – 2013-02-26 08:26:26