mysql reserved words
MySQL RESTRICT y NO ACTION (3)
De la documentación de MySQL: https://dev.mysql.com/doc/refman/5.5/en/create-table-foreign-keys.html
Algunos sistemas de bases de datos tienen comprobaciones diferidas y NO ACTION es una comprobación diferida. En MySQL, las restricciones de clave externa se verifican inmediatamente, por lo que NO ACTION es lo mismo que RESTRICT.
¿Cuál es la diferencia en un FK de MySQL entre RESTRICT
y NO ACTION
? Desde el documento se ven exactamente iguales. ¿Es este el caso? Si es así, ¿por qué tienen ambos?
Es cumplir con la sintaxis estándar de SQL. Como dice el manual : (énfasis mío)
NO ACCIÓ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 de la tabla principal si hay un valor de clave foránea relacionado en la tabla referenciada. Algunos sistemas de bases de datos tienen comprobaciones diferidas y NO ACTION es una comprobación diferida. En MySQL, las restricciones de clave externa se verifican inmediatamente, por lo que NO ACTION es lo mismo que RESTRICT.
Son idénticos en MySQL.
En el estándar SQL 2003 hay 5 acciones referenciales diferentes:
CASCADE
RESTRICT
NO ACTION
SET NULL
SET DEFAULT
La diferencia entre NO ACTION
y RESTRICT
es que, según la norma, NO ACTION
se difiere, mientras que RESTRICT
actúa inmediatamente.