是否有可能在一个表中创建两个主键

问题描述:

您好我想知道可以在mysql的一个表中创建primarykey。如果是,请告诉我背后的概念。 因为我已经看到一个表格,其中两个主键是有没有自动增量设置是否有可能在一个表中创建两个主键

+0

我也看到了这一点。但在SQL Server中。 – 2010-09-22 07:48:57

你只能有1个主键,但:

  • 你可以结合多个列是主键(也许是这一点,你已经看到了)
  • 主键不需要是自动增量,它只需要是唯一的
  • 您可以添加多个索引到一个或多个colums以加快SELECT语句(但减慢INSERT/UPDATE)
  • 这些索引可以标记为唯一,至极就是他们不会让你插入第二行与索引字段相同的内容(就像一个主键)

http://dev.mysql.com/doc/refman/5.1/en/create-table.html

[...]一个表只能有一个主键。 [...]

您可以使用多个列这样你的主键:

CREATE TABLE 
    newTable 
    (field1 INT(11) 
    , field2 INT(11) 
    , field3 VARCHAR(5) 
    , field4 BLOB 
    , PRIMARY KEY (field2, field1, field3) <==== 
    ) 

不,但除了PRIMARY KEY以外,您还可以在表上使用其他UNIQUE索引。 UNIQUE + NOT NULL与主键基本相同。

您所看到的可能是一个复合主键(构成唯一键的多个列)。

一个表可以有一个PRIMARY键,它可以由一个或多个列组成。一个表也可以定义一些额外的键,如UNIQUE KEY约束。

从描述中不清楚您是在查看定义了多个键的表,还是在查看具有多列PRIMARY KEY的表。

使用复合主键...

例如

CREATE TABLE table1 ( 
    first_id int unsigned not null, 
    second_id int unsigned not null auto_increment, 
    user_id int unsigned not null, 
    desc text not null, 
PRIMARY KEY(first_id, second_id)); 

此外,检查出的例子here