Чтобы развить удивительный ответ Грея (для всех, кто сталкивается с этим вопросом), вы можете использовать аннотацию columnDefinition
, чтобы определить ограничение внешнего ключа и каскадное удаление.
Во-первых, ограничения внешнего ключа были добавлены в SQLite в 3.6.19, что означает, что вы можете использовать их в Android 2.2 или выше (так как 2.2 поставляется с SQLite 3.6.22). Однако ограничения внешнего ключа не включены по умолчанию . Чтобы включить их, используйте технику из этого ответа .
Вот пример использования аннотации columnDefinition
. Это предполагает, что ваша таблица / объект, на который вы ссылаетесь, называется parent
, у которого первичный ключ равен id
.
@DatabaseField(foreign = true,
columnDefinition = "integer references parent(id) on delete cascade")
private Parent parent;
Обратите внимание, что формат значения String не включает имя столбца (для этого используется аннотация columnName ).