¿Qué hace exactamente la restricción de clave externa "NO ACTION" de SQLite y cómo es diferente de "RESTRICT"?

La documentación dice:

Configurar "NO ACTION" significa que: cuando se modifica o elimina una clave primaria de la base de datos, no se realiza ninguna acción especial.

Mi primera interpretación de esta frase fue "si se modifica o suprime la clave principal, entonces se realiza esta modificación y no se toma ninguna otra acción", por lo que no se preserva la integridad de la base de datos, lo que conduce a cierta confusión . Pero mis pruebas mostraron que si intento eliminar una clave principal (si todavía existe una clave secundaria), recibo una excepción ("SQLiteConstraintException: código de error 19: la restricción falló" – Estoy probando en android 4.0.3 / SQLite 3.7.x), por lo que "NO ACTION" parece comportarse como se esperaba.

¿Podría alguien por favor explicar y tal vez dar un ejemplo, lo que exactamente "NO ACCIÓN" hace y cómo es diferente de "RESTRICT".

El párrafo introductorio dice:

Si una acción no se especifica explícitamente, el valor predeterminado es "NO ACTION".

Esta es la acción normal.

Además:

La diferencia entre el efecto de una acción RESTRICT y la restricción de restricción de clave externa normal es que el procesamiento de la acción RESTRICT se produce tan pronto como se actualiza el campo -no al final de la sentencia actual como lo haría con una restricción inmediata o al final De la transacción actual como lo haría con una restricción diferida.

Si está probando con una transacción de una sola sentencia que cambia sólo un registro, no verá ninguna diferencia entre NO ACTION y RESTRICT .

  • La base de datos SQLite de Android está bloqueada
  • No se puede crear la base de datos SQLite de SQL: error PRAGMA
  • Android: La ventana del cursor está llena
  • Orden de inserción de SQLite vs orden de consulta?
  • Sqlite3_open_v2 ("/ data / data / com.android.packagename / databases / dump.sqlite", & handle, 1, NULL) falló
  • Tabla de copia de SQLite de Android en otra tabla
  • Exportar archivo de base de datos sqlite en XML y luego en la hoja de cálculo de Excel
  • Android concurrencia sqlite sin excepciones
  • ¿Cómo obtener un cursor con valores distintos solamente?
  • Sqlite3 tabla con límite máximo de líneas (por elección) eficiencia
  • Carácter turco en SQLite mientras utiliza la expresión LIKE
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.