此代码摘录来自KohanaJobs app附带的database.sql文件。
CREATE TABLE IF NOT EXISTS `roles_users` (
`user_id` int(10) unsigned NOT NULL,
`role_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`user_id`,`role_id`),
KEY `fk_role_id` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `sessions` (
`session_id` varchar(24) NOT NULL,
`last_active` int(10) unsigned NOT NULL,
`contents` text NOT NULL,
PRIMARY KEY (`session_id`),
KEY `last_active` (`last_active`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
为什么上面只使用了KEY
?它只是暗示它们被用作FK吗?
答案 0 :(得分:5)
当使用KEY时,INDEX只有另一个词。
KEY通常是INDEX的同义词。当在列定义中给出时,键属性PRIMARY KEY也可以被指定为KEY。这是为了与其他数据库系统兼容而实现的。
答案 1 :(得分:1)
'KEY'行只是告诉MySQL该表在'last_active'字段中应该有一个索引。
MySQL中的外键是使用via FOREIGN KEY'定义的,尽管除非您使用InnoDB作为存储引擎,否则不会遵循此定义。
有关详细信息(我建议您诚实阅读),您应该查看完整的CREATE TABLE语法页面。