Estoy buscando una manera de desactivar temporalmente todas las restricciones de DB (por ejemplo, relaciones de tabla).
Necesito copiar (usando INSERTs) las tablas de un DB a otro DB. Sé que puedo lograrlo ejecutando comandos en el orden correcto (para no romper relaciones).
Pero sería más fácil si pudiera desactivar las restricciones de verificación temporalmente y volver a activarlo después de que finalice la operación.
es posible?
sql-server
ysql-server-2005
las etiquetas. El enlace que proporcioné es para SQL Server, pero puede hacer lo mismo en Oracle: consulte aquí y aquí . También puedes hacerlo en PostgreSQL .Respuestas:
Puede deshabilitar las restricciones FK y CHECK
solo en SQL 2005+. Ver ALTER TABLEo
Las claves primarias y las restricciones únicas no se pueden deshabilitar, pero esto debería estar bien si te he entendido correctamente.
fuente
fuente
check check
que mucha gente olvida!Y, si desea verificar que NO HA roto sus relaciones y presentado huérfanos, una vez que haya armado sus cheques, es decir
o
entonces puede volver a ejecutar y hacer una actualización en cualquier columna marcada de esta manera:
Y cualquier error en ese punto se deberá al incumplimiento de las restricciones.
fuente
En realidad, puede deshabilitar todas las restricciones de la base de datos en un solo comando SQL y volver a habilitarlas llamando a otro comando único. Ver:
Actualmente estoy trabajando con SQL Server 2005, pero estoy casi seguro de que este enfoque también funcionó con SQL 2000
fuente
Deshabilitar y habilitar todas las claves foráneas
ver Deshabilitar restricciones y disparadores de la revista MSDN
fuente