我有下表,它在vendor_id
上强制执行外键:
CREATE TABLE `notes` (
`vendor_id` varchar(20) NOT NULL DEFAULT '',
KEY `vendor_id` (`vendor_id`),
CONSTRAINT `notes_ibfk_1` FOREIGN KEY (`vendor_id`) REFERENCES `title` (`vendor_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我正在查看其他人的桌子,它有KEY
,但没有显示CONSTRAINT
,如下所示:
CREATE TABLE `notes` (
`vendor_id` varchar(20) NOT NULL DEFAULT '',
KEY `vendor_id` (`vendor_id`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
这对于KEY
没有其他任何东西的意义/做法究竟是什么意思?
答案 0 :(得分:5)
KEY
是INDEX
的同义词,因此在这种情况下,vendor_id
已在其上创建了索引,但未明确定义为表PRIMARY KEY
,这将强制独特。
KEY通常是INDEX的同义词。当在列定义中给出时,键属性PRIMARY KEY也可以被指定为KEY。这是为了与其他数据库系统兼容而实现的。
答案 1 :(得分:3)
如§12.1.14 "CREATE TABLE
Syntax" of the Reference Manual中所述:
KEY
通常是INDEX的同义词。在列定义中给出时,关键属性PRIMARY KEY
也可以指定为KEY
。这是为了与其他数据库系统兼容而实现的。
(第一句话适用于您的情况;所以它只是在vendor_id
上创建一个名为notes.vendor_id
的索引。)