sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo se pueden deshabilitar temporalmente las restricciones de clave externa usando T-SQL?

Si desea deshabilitar todas las restricciones en la base de datos, simplemente ejecute este código:

-- disable all constraints
EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

Para volver a activarlos, ejecute:(la impresión es opcional, por supuesto, y solo enumera las tablas)

-- enable all constraints
exec sp_MSforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

Lo encuentro útil al completar datos de una base de datos a otra. Es un enfoque mucho mejor que eliminar las restricciones. Como mencionó, es útil cuando se colocan todos los datos en la base de datos y se vuelven a llenar (por ejemplo, en un entorno de prueba).

Si está eliminando todos los datos, esta solución puede resultarle útil.

También a veces es útil deshabilitar todos los disparadores, puedes ver la solución completa aquí.