我已经多次看到过这种情况,而且,我不太了解它。基本上,我所理解的是这些列的输入存在约束,要将它们一起用作UNIQUE,但我不明白name
的目的是什么?在大多数情况下,name
字段甚至不匹配表中的任何列,所以我想知道是否可以在name
上查询数据库?究竟用什么名字?
示例:
CREATE TABLE boards (
id_board smallint(5) unsigned NOT NULL auto_increment,
id_cat tinyint(4) unsigned NOT NULL default '0',
child_level tinyint(4) unsigned NOT NULL default '0',
id_parent smallint(5) unsigned NOT NULL default '0',
board_order smallint(5) NOT NULL default '0',
id_last_msg int(10) unsigned NOT NULL default '0',
id_msg_updated int(10) unsigned NOT NULL default '0',
member_groups varchar(255) NOT NULL default '-1,0',
id_profile smallint(5) unsigned NOT NULL default '1',
name varchar(255) NOT NULL default '',
description text NOT NULL,
num_topics mediumint(8) unsigned NOT NULL default '0',
num_posts mediumint(8) unsigned NOT NULL default '0',
count_posts tinyint(4) NOT NULL default '0',
id_theme tinyint(4) unsigned NOT NULL default '0',
override_theme tinyint(4) unsigned NOT NULL default '0',
unapproved_posts smallint(5) NOT NULL default '0',
unapproved_topics smallint(5) NOT NULL default '0',
redirect varchar(255) NOT NULL default '',
deny_member_groups varchar(255) NOT NULL default '',
PRIMARY KEY (id_board),
UNIQUE categories (id_cat, id_board),
KEY id_parent (id_parent),
KEY id_msg_updated (id_msg_updated),
KEY member_groups (member_groups(48))
) ENGINE={$engine};
在这里,您可以看到UNIQUE categories
其中categories
是名称,但它与任何地方的任何列名都无关。可以查询一下吗?对不起这里的愚蠢问题。只是永远不明白这一点!
答案 0 :(得分:2)
指定名称,以便稍后可以使用它来修改/删除UNIQUE约束。它还有助于为索引提供一个更易读的名称(与mysql自动生成的名称相比),这对以后的调试很有用。
更多here。