Quiero crear tablas en SQL Server 2008, pero no sé cómo crear una clave primaria compuesta. ¿Cómo puedo conseguir esto?Cómo crear una clave primaria compuesta en SQL Server 2008
Respuesta
create table my_table (
column_a integer not null,
column_b integer not null,
column_c varchar(50),
primary key (column_a, column_b)
);
¿Cuál es la diferencia entre el uso de ** Primary Clave ** y ** RESTRICCIÓN ** como en el ejemplo de @ matthew-abbott? – mateuscb
Crea una restricción con nombre que se puede eliminar/actualizar por nombre – longhairedsi
No del todo cierto. Ambos crean "restricciones nombradas". Es solo que con el primero, no controlas el nombramiento. Pero una vez creado, puede buscar el nombre que se usó y eliminar/actualizar por nombre ... – Auspex
CREATE TABLE UserGroup
(
[User_Id] INT NOT NULL,
[Group_Id] INT NOT NULL
CONSTRAINT PK_UserGroup PRIMARY KEY NONCLUSTERED ([User_Id], [Group_Id])
)
+1 - Sí, nombre a sus restricciones personas, sino Sql Server hace cosas desagradables como nombres PK_UserGrou_5DEAEAF5 en DB de una versión y PK_UserGrou_3214EC0777F66C69 en otro. Esto es un problema si necesita actualizar o descartar el PK, ya que primero tiene que obtener el nombre del DB y luego usar el SQL dinámico (o construir el comando en el código primero). Además, es feo. – monty
¿Hay alguna razón por la que no quisiera que mi PK se agrupe? – 4AM
@ 4AM Esto puede responder a su pregunta: [enlace] (https://dba.stackexchange.com/questions/7741/when-should-a-primary-key-be-declared-non-clustered) – Dongminator
Via Enterprise Manager (SSMS) ...
- haga clic derecho en la tabla que desea crear la clave compuesta y seleccione Diseño.
- Resalte las columnas que desean formar como un compuesto clave
- Haga clic derecho sobre esas columnas y Establecer clave principal
Para ver el SQL a continuación, puede hacer clic derecho en el Table
>Script Table As
>Create To
Gracias. Esta es la forma más segura/más fácil sin dañar potencialmente mi sintaxis SQL – AlbatrossCafe
Esto lo hace fácil para aquellos que quieren la solución rápida a través de la interfaz de diseño/guía. Gracias por la ayuda. –
Primero cree 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.
Para crear una clave única compuesta en la mesa
ALTER TABLE [TableName] ADD UNIQUE ([Column1], [Column2], [column3]);
¡Una tecla ÚNICA NO es lo mismo que una tecla PRIMARIA! –
Sé que llego tarde a la fiesta, pero para una tabla existente, trato:
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])
)
agregue alguna descripción también –
6 años tarde y la sintaxis no es correcta! –
Para 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)
)
ACTUALIZACIÓN
Debo añadirlo!
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 manera es más saludable y serial. Puede buscar los nombres de Restricción de FK/PK (dbo.dbname> Keys> ..) pero si no usa restricción, MSSQL crea automáticamente nombres FK/PK aleatorios. Tendrá que ver cada cambio (modificar la tabla) que necesita.
Le recomiendo que establezca un estándar para usted y la restricción se debe definir 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.
esto no crea PK pero solo FK, ¿no? – batmaci
@batmaci; No, es tanto FK como el grupo FK doble para PK. Ese uso es más saludable. Yo lo aconsejo Cuando no crea PK, puede usar también. –
- 1. Crear una clave externa compuesta en SQL Server 2008
- 2. ¿Cómo almacena SQL Server una clave primaria compuesta?
- 3. SQL Server 2008 Búsqueda de texto completo en una tabla con una clave primaria compuesta
- 4. ¿Cómo puedo definir una clave primaria compuesta en SQL?
- 5. clave primaria compuesta
- 6. cómo crear una clave primaria compuesta (anotación de persistencia java)
- 7. clave primaria compuesta e índices adicionales
- 8. clave primaria compuesta de PostgreSQL
- 9. ¿Falsifica una clave primaria compuesta? Rails
- 10. Usar clave primaria compuesta como clave externa
- 11. Compuesto/clave primaria/única compuesta con Django
- 12. Cómo crear una restricción única compuesta en SQL Server 2005
- 13. Cómo agregar una clave primaria compuesta a la tabla
- 14. Cómo crear una clave primaria compuesta que contiene un atributo @ManyToOne como @EmbeddedId en JPA?
- 15. ¿Cómo creo una clave primaria compuesta usando GORM?
- 16. obteniendo un error con linq-to-sql en una tabla con una clave primaria compuesta
- 17. Clave primaria compuesta, clave externa. ¿Referencia a objeto o clave?
- 18. SQL Server auto incrementar una columna sin clave primaria
- 19. Clave externa de tabla SQL que es parte de una clave primaria compuesta
- 20. ALTER TABLE para agregar una clave primaria compuesta
- 21. Cómo crear una instancia en SQL Server 2008
- 22. clave primaria sql e índice
- 23. Ventajas y desventajas de tener una clave primaria compuesta ...
- 24. Límite superior para clave primaria autoincrement en SQL Server
- 25. SQL Server 2008 Express Edition: cómo crear una secuencia
- 26. Crear clave externa en SQL Server Management Studio
- 27. Crear una columna calculada en SQL Server 2008
- 28. ¿La clave primaria SQL puede aceptar '0'?
- 29. Primaria compuesta y cardinalidad
- 30. Cómo crear una clave compuesta en varias columnas
Como eres nuevo en asp.net, un consejo: las claves primarias compuestas son * algo malo * que generalmente indican un diseño poco pensado – smirkingman
@smirkingman Se pueden resolver problemas muy importantes, a menudo casi exclusivamente con teclas primarias compuestas. Por ejemplo, cuando tiene cientos/miles de usuarios que guardan filas en una sola tabla/tipo de entidad. Desea las filas ordenadas por ID de usuario, más un segundo valor. Su juicio de valor es simplemente incorrecto, de lo contrario, estaríamos desaprobando esta característica pronto. –
Posible duplicado de [Creación de clave primaria compuesta en SQL Server] (http://stackoverflow.com/questions/12594791/creating-composite-primary-key-in-sql-server) –