Quiero crear tablas en SQL Server 2008, pero no sé cómo crear una clave primaria compuesta. ¿Cómo puedo conseguir esto?
Quiero crear tablas en SQL Server 2008, pero no sé cómo crear una clave primaria compuesta. ¿Cómo puedo conseguir esto?
Respuestas:
create table my_table (
column_a integer not null,
column_b integer not null,
column_c varchar(50),
primary key (column_a, column_b)
);
CREATE TABLE UserGroup
(
[User_Id] INT NOT NULL,
[Group_Id] INT NOT NULL
CONSTRAINT PK_UserGroup PRIMARY KEY NONCLUSTERED ([User_Id], [Group_Id])
)
Vía Enterprise Manager (SSMS) ...
Para ver el SQL a continuación, puede hacer clic derecho en la Table
> Script Table As
>Create To
Para el servidor MSSQL 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 agregar la modificación de claves externas / primarias, primero debe crear las claves con restricciones o no puede realizar cambios. Como este 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 restricciones FK / PK (dbo.dbname> Keys> ..) pero si no usa una restricción, MSSQL crea automáticamente nombres FK / PK aleatorios. Tendrá que ver cada cambio (alterar tabla) que necesita.
Le recomiendo que establezca un estándar para usted; la restricción debe definirse de acuerdo con su estándar. No tendrá que memorizar y no tendrá que pensar demasiado. En resumen, trabajas más rápido.
Primero cree la base de datos y la tabla, agregando manualmente las columnas. En qué columna ser clave principal. Debe hacer clic con el botón derecho en esta columna y establecer la clave primaria y establecer el valor de inicialización de la clave primaria.
Para crear una clave única compuesta en la tabla
ALTER TABLE [TableName] ADD UNIQUE ([Column1], [Column2], [column3]);
CREATE TABLE UserGroup
(
[User_Id] INT Foreign Key,
[Group_Id] INT foreign key,
PRIMARY KEY ([User_Id], [Group_Id])
)