2011-12-16 16 views
12

Tengo muchas tablas con restricciones de relación. Las tablas contienen datos ficticios, me gustaría truncar/vaciar los datos de las tablas mientras se mantiene la estructura.Desactivar restricciones temporalmente

Cada vez que quiero vaciar una tabla, obtengo errores de restricción de clave externa. ¿Qué puedo hacer para desactivar la restricción temporalmente y luego configurarla de nuevo una vez que se eliminan los datos ficticios?

¡Intenté esta solución, pero no funcionó! Una vez desactivo, a continuación, tratar de truncar, me sale error de restricción FK ...

//disable 
SET FOREIGN_KEY_CHECKS = 0; 


//enable 
SET FOREIGN_KEY_CHECKS = 1; 

estoy usando MySQL.

¿Alguna idea?

Respuesta

7

Debe eliminar el FK si desea usar truncate, ya que no truncará una operación registrada.

Puede usar delete con FK en su lugar, pero eliminar es una operación registrada y lleva más tiempo.

+0

Buen punto. No sabía eso ... – user311509

3

Comience por el final (tablas que solo son FK) y no se hace referencia a ningún otro relato. Esos que puedes truncar. Luego sube y borra. Si truncas/eliminas en el orden correcto, entonces no violarás las contraints. O podrías dejar caer todos los constantes. Truncar las tablas. A continuación, agregue las contraints nuevamente.

Cuestiones relacionadas