Активный Android при удалении и при удалении

В своем проекте я использую Active Android. Попытка узнать больше об этом, особенно о свойствах элементов таблицы - что-то вроде ForeignKeyAction.

Я хочу, чтобы моя модель удаляла только себя, если происходит действие удаления, а не удаляла дочерние элементы. Код я нашел -

@Column(name = "Category", onUpdate = ForeignKeyAction.CASCADE, onDelete = ForeignKeyAction.CASCADE)
public Category category;

Но я не знаю, какой флаг за какое свойство отвечает - их много - form docs

public enum ForeignKeyAction {
    SET_NULL, SET_DEFAULT, CASCADE, RESTRICT, NO_ACTION
}

Может ли кто-нибудь опубликовать ссылку на подробное объяснение или объяснить этот материал. PS Я изучил множество сайтов, включая https://guides.codepath.com/android/ActiveAndroid-Guide и https://github.com/pardom/ActiveAndroid/wiki/Getting-started не направляйте меня туда, там нет пояснений по этому вопросу.

Кроме того, какие другие свойства, такие как onDelete, я могу установить для полей моей модели?


person Anton Kizema    schedule 09.07.2015    source источник


Ответы (1)


Это не свойства активного андроида, а скорее SQL. Я предполагаю, что активный Android использует базу данных SQLite в Android. Если это так, вот их значения:

БЕЗ ДЕЙСТВИЙ. Настройка «БЕЗ ДЕЙСТВИЙ» означает именно это: когда родительский ключ изменяется или удаляется из базы данных, никаких специальных действий не предпринимается.

ОГРАНИЧИТЬ: действие "ОГРАНИЧИТЬ" означает, что приложению запрещено удалять (для ОГРАНИЧЕНИЯ ПРИ УДАЛЕНИИ) или изменять (для ОГРАНИЧЕНИЯ ПРИ ОБНОВЛЕНИИ) родительский ключ, если с ним сопоставлены один или несколько дочерних ключей. . Разница между эффектом действия RESTRICT и нормальным применением ограничения внешнего ключа заключается в том, что обработка действия RESTRICT происходит, как только поле обновляется, а не в конце текущего оператора, как это было бы с немедленным ограничением, или в конце текущей транзакции, как это было бы с отложенным ограничением. Даже если ограничение внешнего ключа, к которому оно прикреплено, отложено, настройка действия RESTRICT приводит к тому, что SQLite немедленно возвращает ошибку, если родительский ключ с зависимыми дочерними ключами удален или изменен.

SET NULL: если сконфигурировано действие «SET NULL», то при удалении родительского ключа (для ON DELETE SET NULL) или изменении (для ON UPDATE SET NULL) столбцы дочерних ключей всех строки в дочерней таблице, сопоставленные с родительским ключом, содержат значения SQL NULL.

УСТАНОВИТЬ ПО УМОЛЧАНИЮ. Действия «УСТАНОВИТЬ ПО УМОЛЧАНИЮ» аналогичны действию «УСТАНОВИТЬ NULL», за исключением того, что каждый из столбцов дочернего ключа содержит значение столбца по умолчанию вместо NULL. Обратитесь к документации CREATE TABLE для получения подробной информации о том, как значения по умолчанию назначаются столбцам таблицы.

КАСКАД: действие "КАСКАД" распространяет операцию удаления или обновления родительского ключа на каждый зависимый дочерний ключ. Для действия "ON DELETE CASCADE" это означает, что каждая строка в дочерней таблице, которая была связана с удаленной родительской строкой, также удаляется. Для действия "ON UPDATE CASCADE" это означает, что значения, хранящиеся в каждом зависимом дочернем ключе, изменяются, чтобы соответствовать новым значениям родительского ключа.

Кроме того, вот ссылка, по которой я нашел эту информацию. Вы также можете ознакомиться с общей документацией по SQLite.

person Joseph Roque    schedule 09.07.2015