una primaria llaves llave foranea declarar crear compuesto compuestas compuesta como clave sql sql-server-2008

llaves - Cómo crear una clave primaria compuesta en SQL Server 2008



llave foranea sql (8)

Quiero crear tablas en SQL Server 2008, pero no sé cómo crear una clave primaria compuesta. ¿Cómo puedo conseguir esto?


A través de Enterprise Manager (SSMS) ...

  • Haga clic con el botón derecho en la Tabla en la que desea crear la clave compuesta y seleccione Diseño .
  • Resalta las columnas que deseas formar como una clave compuesta
  • Haga clic con el botón derecho sobre esas columnas y configure la clave principal

Para ver el SQL, puede hacer clic con el botón secundario en la Table > Script Table As > Create To


Para MSSQL Server 2012

CREATE TABLE usrgroup( usr_id int FOREIGN KEY REFERENCES users(id), grp_id int FOREIGN KEY REFERENCES groups(id), PRIMARY KEY (usr_id, grp_id) )

ACTUALIZAR

Debo agregar!

Si desea alterar estas claves externas / principales, primero debe crearlas con restricción o no puede realizar cambios. Me gusta esto a continuación;

CREATE TABLE usrgroup( usr_id int, grp_id int, CONSTRAINT FK_usrgroup_usrid FOREIGN KEY (usr_id) REFERENCES users(id), CONSTRAINT FK_usrgroup_groupid FOREIGN KEY (grp_id) REFERENCES groups(id), CONSTRAINT PK_usrgroup PRIMARY KEY (usr_id,grp_id) )

En realidad, la última forma es más saludable y serial. Puede buscar los nombres de restricción FK / PK (dbo.dbname> Keys> ..) pero si no usa restricción, MSSQL crea automáticamente nombres aleatorios de FK / PK. Tendrá que ver cada cambio (modificar la tabla) que necesita.

Recomiendo que establezca un estándar para usted y la restricción debe definirse de acuerdo con su estándar. No tendrás que memorizar y no tendrás que pensar demasiado. En resumen, trabajas más rápido.


Para crear una clave única compuesta en la tabla

ALTER TABLE [TableName] ADD UNIQUE ([Column1], [Column2], [column3]);


Primero crea la base de datos y la tabla, agregando manualmente las columnas. En qué columna debe ser la clave principal. Debe hacer clic con el botón derecho en esta columna y establecer la clave principal y establecer el valor inicial de la clave principal.


Sé que llego tarde a esta fiesta, pero para una mesa existente, intente:

ALTER table TABLE_NAME ADD CONSTRAINT [name of your PK, e.g. PK_TableName] PRIMARY KEY CLUSTERED (column1, column2, etc.)


CREATE TABLE UserGroup ( [User_Id] INT Foreign Key, [Group_Id] INT foreign key, PRIMARY KEY ([User_Id], [Group_Id]) )


CREATE TABLE UserGroup ( [User_Id] INT NOT NULL, [Group_Id] INT NOT NULL CONSTRAINT PK_UserGroup PRIMARY KEY NONCLUSTERED ([User_Id], [Group_Id]) )


create table my_table ( column_a integer not null, column_b integer not null, column_c varchar(50), primary key (column_a, column_b) );