elaborar en respuesta impresionante de Grey (para cualquier otra persona que se topa con esta pregunta), puede utilizar la anotación columnDefinition
para definir una restricción de clave externa y eliminación en cascada.
En primer lugar, las restricciones de clave externa se agregaron a SQLite en 3.6.19, lo que significa que puede usarlas en Android 2.2 o superior (ya que 2.2 se envía con SQLite 3.6.22). Sin embargo, las restricciones de clave externa son no habilitadas de forma predeterminada. Para habilitarlos, use la técnica de this answer.
Aquí hay un ejemplo usando la anotación columnDefinition
. Esto supone que su tabla/objeto a la que hace referencia se llama parent
, que tiene una clave principal de id
.
@DatabaseField(foreign = true,
columnDefinition = "integer references parent(id) on delete cascade")
private Parent parent;
Tenga en cuenta que el formato de la cadena de valor no incluye el nombre de la columna (que es lo que la anotación es columnName para).
Encontré la solución getCreateTableStatements(), y funciona como un encanto. Gracias por su respuesta. – Timo