Saltarse las constraints en SQL Server
Saltarse las constraints en SQL Server Anonymous (not verified) Tue, 09/08/2009 - 18:13Tengo que hacer una carga masiva de datos en muchas tablas de SQL Server que tienen definidas bastantes constraints, sobretodo claves foráneas (FK) entre tablas.
He intentado seguir un orden para cargarlas para que no me devuelva errores de restricciones de integridad, pero son tantas que no consigo encontrar el orden correcto.
Estoy pensando ya en eliminar las FK de todas las tablas, pero seguro que hay alguna manera mejor de solucionarlo.
Alguien me puede ayudar?
Las constraints de una tabla
Submitted by Tommy (not verified) on Tue, 09/08/2009 - 18:41
Las constraints de una tabla de SQL Server se pueden desactivar temporalmente con la opción NOCHECK CONSTRAINT ALL de ALTER TABLE.
El comando quedaría así:
ALTER TABLE tabla NOCHECK CONSTRAINT ALL;
Con esto se desactivan y puedes hacer la carga de datos sin que te molesten las FK
Después, para volver a activarlas sólo tienes que hacer este otro ALTER TABLE:
ALTER TABLE tabla WITH CHECK CHECK CONSTRAINT ALL;
Reactiva las constraints chequeando que los datos de las tablas las cumplan
Si quieres volver a habilitarlas sin validar los datos que hayas cargado, aunque no es muy recomendable también se puede hacer:
ALTER TABLE tabla CHECK CONSTRAINT ALL;
Espero que te sea de ayuda,
¿Y no habrá ningun tipo de
Submitted by Jaime (not verified) on Thu, 11/19/2015 - 10:12
¿Y no habrá ningun tipo de problema en cuanto los datos/registros que hayas modificado una vez vuelvas a activar las CONSTRAINTS?
Por ejemplo si yo cambio el valor de un campo, el cual lo esta cogiendo de una primary key de otra tabla, al volver a a activar las CONSTRAINTS, ¿No habrá conflictos?
Justamente al desactivar los
Submitted by Carlos on Thu, 11/19/2015 - 23:46
In reply to ¿Y no habrá ningun tipo de by Jaime (not verified)
Justamente al desactivar los constraints pierdes la garantía de que los datos respetan el modelo relacional, y entonces la responsabilidad es tuya con las modificaciones que hagas, que una vez terminadas han de seguir manteniendo la integridad referencial del modelo, o al menos de los constraints que haya definidos.
Es decir, que tendrás conflictos al reactivarlos sólo si no respetas las reglas que definen los constraints.