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.