2011-04-27 31 views
39

¿Cuál es la diferencia en mySQL FK entre RESTRICT y NO ACTION? Del doc parecen exactamente iguales. ¿Es este el caso? Si es así, ¿por qué ambos?mySQL RESTRICT y NO ACTION

Respuesta

11

Es para cumplir con la sintaxis SQL estándar. Al igual que el manual dice: (el énfasis es mío)

no implementación: una palabra clave de SQL estándar. En MySQL, equivalente a RESTRICT. El servidor MySQL rechaza la operación de eliminación o actualización para la tabla primaria si hay un valor de clave externa relacionado en la tabla referenciada. Algunos sistemas de bases de datos tienen controles diferidos, y NO ACCIÓN es un cheque diferido. En MySQL, las restricciones de clave externa se verifican de inmediato, por lo que NO ACTION es lo mismo que RESTRICT.

13

Son idénticos en MySQL.

En el estándar SQL 2003 hay 5 diferentes acciones referenciales:

CASCADE 
RESTRICT 
NO ACTION 
SET NULL 
SET DEFAULT 

La diferencia entre NO ACTION y RESTRICT es que de acuerdo a la norma, mientras que NO ACTION se difiere RESTRICT actúa de inmediato.