¿Cómo hago una clave compuesta con SQL Server Management Studio?

163

¿Cómo hago una clave compuesta con SQL Server Management Studio?

Quiero dos columnas INT para formar la identidad (única) para una tabla

mrblah
fuente

Respuestas:

356

ingrese la descripción de la imagen aquí

  1. Abra la pestaña de la tabla de diseño
  2. Resalte sus dos campos INT (Ctrl / Shift + clic en los bloques grises en la primera columna)
  3. Haga clic derecho -> Establecer clave principal
Cory
fuente
44
Para resaltar múltiples campos, haga clic en los bloques delante de las columnas "nombre de columna" y "tipo de datos" y tal. Ctrl / Shift + Hacer clic en los campos de nombre de columna en realidad no harán nada.
Pimgd
3
Entonces, si uno es una cadena y el otro es un int, ¿no es posible? No parece ser ...
B. Clay Shannon
3
Lo rechazaría pero luego me di cuenta de que el OP específicamente me preguntó cómo hacerlo en SSMS. Siempre debe hacer un script de cambios en la base de datos + si usa herramientas como esta, nunca aprenderá cómo hacer los cambios por sí mismo
JonnyRaa
2
@JonnyLeeds es un caballo muy alto ahí. ¿Qué tiene de malo la GUI si eso es lo que la gente prefiere?
leinad13
44
@ leinad13 ¡Debo haber tenido un mal día! Pero el problema principal es que no son repetibles y generalmente significa que las personas están haciendo cambios y ajustes ad hoc incontrolados para solucionar problemas de bases de datos / esquemas. Esa es una muy mala señal: no están documentados (por ejemplo, al tener el código para corregir escrito y registrado en el control de versiones y / o tener una herramienta que aplique automáticamente los cambios correctos a la versión de la base de datos) y si tiene más de uno instalación, entonces estás en serios problemas tan pronto como las bases de datos no tengan el mismo esquema
JonnyRaa
63

Aquí hay un código para hacerlo:

-- Sample Table
create table myTable 
(
    Column1 int not null,
    Column2 int not null
)
GO

-- Add Constraint
ALTER TABLE myTable
    ADD CONSTRAINT pk_myConstraint PRIMARY KEY (Column1,Column2)
GO

Agregué la restricción como una declaración separada porque supongo que su tabla ya se ha creado.

Roatin Marth
fuente
Supongo que esta respuesta encaja ya que puede ejecutar esto dentro de la ventana de consulta de SSMS ...;)
dance2die
2
Scripting FTW, y para nombres explícitos! Las definiciones externas ADD PRIMARY KEYe internas PRIMARY KEYdarán nombres aleatorios a las teclas, lo que puede dificultar que el bajingo se dé cuenta de dónde pertenece si no tiene el diagrama db + tablas.
Daevin
35
create table my_table (
    id_part1 int not null,
    id_part2 int not null,
    primary key (id_part1, id_part2)
)
Yfeldblum
fuente
14

En el modo de diseño (haga clic con el botón derecho en la tabla, seleccione modificar) resalte ambas columnas, haga clic con el botón derecho y elija establecer clave principal

Gratzy
fuente
7

Abra el diseñador de tablas en SQL Server Management Studio (haga clic con el botón derecho en la tabla y seleccione 'Diseño')

Manteniendo presionada la tecla Ctrl, resalte dos o más columnas en el margen izquierdo de la tabla

Presione la pequeña 'Clave' en la barra de menú estándar en la parte superior

Ya terminaste ..

:-)

usuario4878037
fuente
5

Resalte ambas filas en la vista de diseño de la tabla y haga clic en el icono de la llave, ahora serán una clave primaria compuesta.

No estoy seguro de su pregunta, pero solo una columna por tabla puede ser una columna IDENTIDAD, no ambas.

KM.
fuente
4
create table myTable 
(
    Column1 int not null,
    Column2 int not null
)
GO


ALTER TABLE myTable
    ADD  PRIMARY KEY (Column1,Column2)
GO
Tejas
fuente