¿Qué hace exactamente la restricción de clave foránea "NO ACTION" de SQLite y en qué se diferencia de "RESTRICT"?
losdocumentación dice:
La configuración de "NO ACCIÓN" significa solo eso: cuando se modifica o elimina una clave principal de la base de datos, no se realiza ninguna acción especial.
Mi primera interpretación de esta oración fue "si se modifica o elimina la clave principal, entonces esta modificación se realiza y no se realiza ninguna otra acción", por lo que no se preserva la integridad de la base de datos, lo que lleva a algunosConfusión. Pero mis pruebas demostraron que si intento eliminar una clave principal (si aún existe una clave secundaria), obtengo una excepción ("SQLiteConstraintException: código de error 19: error de restricción" - Estoy probando en Android 4.0.3 / SQLite 3.7.x), por lo que "NO ACCIÓN" parece comportarse como se espera.
¿Podría alguien explicar y quizás dar un ejemplo, qué hace exactamente "NO ACTION" y en qué se diferencia de "RESTRICT"?