truncar tabla restriccion quitar near llaves foreign_key_checks foreign foraneas expresión error desaparecida con mysql

mysql - tabla - set foreign_key_checks=0 sql server



¿MySQL foreign_key_checks afecta a toda la base de datos? (5)

Como explicó Ron, hay dos variables, local y global. La variable local siempre se usa, y es lo mismo que global al conectarse.

SET FOREIGN_KEY_CHECKS=0; SET GLOBAL FOREIGN_KEY_CHECKS=0; SHOW Variables WHERE Variable_name=''foreign_key_checks''; # always shows local variable

Al establecer la variable GLOBAL, la local no se cambia para ninguna conexión existente. Necesita volver a conectar o configurar la variable local también.

Quizás no sea intuitivo, MYSQL no impone claves externas cuando FOREIGN_KEY_CHECKS se vuelven a habilitar. Esto hace posible crear una base de datos inconsistente aunque las claves y controles externos estén activados.

Si desea que sus claves externas sean completamente consistentes, debe agregar las claves mientras la verificación está activada.

Cuando ejecuto este comando en MySQL:

SET FOREIGN_KEY_CHECKS=0;

¿Afecta todo el motor o solo es mi transacción actual?


En caso de usar el buscador de consultas Mysql, SET FOREIGN_KEY_CHECKS=0; no tiene ningún impacto en la versión 1.1.20. Sin embargo, funciona bien en el navegador de consultas Mysql 1.2.17


En realidad, hay dos variables foreign_key_checks : una variable global y una variable local (por sesión). Al conectarse, la variable de sesión se inicializa al valor de la variable global.
El comando SET foreign_key_checks modifica la variable de sesión.
Para modificar la variable global, use SET GLOBAL foreign_key_checks o SET @@global.foreign_key_checks .

Consulte las siguientes secciones del manual:
http://dev.mysql.com/doc/refman/5.7/en/using-system-variables.html
http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html


Está basado en la sesión, cuando se establece de la manera que lo hizo en su pregunta.

https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

De acuerdo con esto, FOREIGN_KEY_CHECKS es "Ambos" para el alcance. Esto significa que se puede configurar para la sesión:

SET FOREIGN_KEY_CHECKS=0;

o globalmente:

SET GLOBAL FOREIGN_KEY_CHECKS=0;


# will get you the current local (session based) state. SHOW Variables WHERE Variable_name=''foreign_key_checks'';

Si no configuró GLOBAL, solo su sesión se vio afectada.