UNIQUE名称(column1,column2)

时间:2016-05-24 16:53:36

标签: mysql sql

我已经多次看到过这种情况,而且,我不太了解它。基本上,我所理解的是这些列的输入存在约束,要将它们一起用作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是名称,但它与任何地方的任何列名都无关。可以查询一下吗?对不起这里的愚蠢问题。只是永远不明白这一点!

1 个答案:

答案 0 :(得分:2)

指定名称,以便稍后可以使用它来修改/删除UNIQUE约束。它还有助于为索引提供一个更易读的名称(与mysql自动生成的名称相比),这对以后的调试很有用。

更多here