【发布时间】:2014-11-26 03:18:02
【问题描述】:
为什么这条sql不会创建外键?
DROP TABLE IF EXISTS `flow_people`;
CREATE TABLE `flow_people` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`active` enum('0','1') COLLATE utf8_unicode_ci DEFAULT '0',
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`token` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`unixtime` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`company_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`salutation` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL,
`first_name` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`middle_name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`last_name` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`dob` date NOT NULL,
`cams` decimal(7,0) NOT NULL,
`location_id` int(8) NOT NULL,
`people_type` int(8) NOT NULL COMMENT 'flow_people_types',
`comment` longtext COLLATE utf8_unicode_ci,
PRIMARY KEY (`id`),
FOREIGN KEY (`people_type`) REFERENCES flow_people_types(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=1666 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
表 flow_people_types 存在,它有一个 ID 列。
我想我在这里遗漏了一些基本的东西,有什么问题?
【问题讨论】:
-
外键约束对两个表上使用的确切数据类型敏感,并且父表必须在引用列上有索引。任何现有数据也必须满足约束的要求。如果没有看到其他表的定义,就不可能说为什么这不起作用。
-
外键喜欢的列必须具有完全相同的属性。
标签: mysql sql foreign-keys create-table