Tengo una tabla a la que le falta una columna en su restricción de clave principal. En lugar de editarlo a través de SQL Server, quiero poner esto en un script para agregarlo como parte de nuestros scripts de actualización.
¿Qué sintaxis puedo usar para hacer esto? ¿Debo eliminar y volver a crear la restricción de clave?
sql-server
Jason
fuente
fuente
Respuestas:
Si. La única forma sería eliminar la restricción con una tabla Alter y luego volver a crearla.
fuente
alter table PatientsInfo drop constraint PK__Patients__1CBB51380A338187
funciona aquídb
.table
SOLTAR LLAVE PRIMARIA, AÑADIR LLAVE PRIMARIA (id1
,id2
);PRIMARY KEY CONSTRAINT
no se puede modificar, solo puede soltarlo y crear de nuevo. En el caso de grandes conjuntos de datos, puede provocar un tiempo de ejecución prolongado y, por lo tanto, la falta de disponibilidad de tablas.fuente
En cuanto al rendimiento, no tiene sentido mantener índices no agrupados durante este proceso, ya que se volverán a actualizar al soltarlos y crearlos. Si se trata de un conjunto de big data, debería considerar cambiar el nombre de la tabla (si es posible, ¿alguna configuración de seguridad en ella?), Volver a crear una tabla vacía con las claves correctas y migrar todos los datos allí. Debes asegurarte de tener suficiente espacio para esto.
fuente
En mi caso, quiero agregar una columna a una clave principal (columna 4). Usé este script para agregar column4
fuente
puede cambiar el nombre de los objetos de restricción usando sp_rename (como se describe en esta respuesta )
por ejemplo:
fuente