2010-09-22 13 views
7

hola quiero saber que es posible hacer una clave principal en una tabla en mysql. en caso afirmativo, cuéntame el concepto detrás de esto. porque he visto una mesa en la que dos de clave principal está ahí sin incremento automático conjuntoes posible hacer dos claves principales en una tabla

+0

También he visto esto. Pero en SQL Server. –

Respuesta

8

que sólo puede tener 1 clave primaria, pero:

  • se puede combinar más de una columna a ser la clave primaria (tal vez es esto lo que ha visto)
  • la clave principal no necesita ser un autoincremento, solo tiene que ser único
  • puede agregar más de un índice a una o más columnas para acelerar las instrucciones SELECT (pero ralentizar INSERT/UPDATE)
  • esos índices se pueden marcar como únicos, lo que significa s No dejan que se inserta una segunda fila con el mismo contenido en el índice de campos (al igual que una clave principal)
1

Puede utilizar varias columnas para su clave primaria de esta manera:

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

No, pero puede tener otros índices ÚNICOS en la tabla, además de la CLAVE PRIMARIA. UNIQUE + NOT NULL es básicamente lo mismo que una clave principal.

Lo que ha visto es probablemente una clave primaria compuesta (más de una columna forma la clave única).

1

Una tabla puede tener una sola clave PRIMARIA, que puede consistir en una o más columnas. Una tabla también puede tener varias claves adicionales definidas en ella, como restricciones UNIQUE KEY.

No está claro a partir de su descripción si estaba mirando una tabla con varias teclas definidas, o una tabla con una CLAVE PRIMARIA de varias columnas.

2

utilizar una clave primaria compuesta ...

por ejemplo,

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)); 

También, consulte el ejemplo here

Cuestiones relacionadas