2015-07-09 2 views
1

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

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

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

Но я не знаю, что флаг answeirs за что собственность - есть много из них - форма документы

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, можно установить в поля моей модели?

ответ

3

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

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

RESTRICT: Действие «Ограничить» означает, что приложение запрещено удалять (для ON DELETE RESTRICT) или изменения (для ON UPDATE RESTRICT) родительский ключ, когда существует один или несколько дочерних ключей, отображенные на него. Разница между эффектом действия RESTRICT и нормальным нарушением внешнего ключа заключается в том, что обработка действий RESTRICT происходит, как только поле обновляется, а не в конце текущего оператора, как это было бы с непосредственным ограничением или в конце текущей транзакции, как это было бы с отложенным ограничением. Даже если ограничение внешнего ключа, к которому он присоединен, откладывается, настройка действия RESTRICT заставляет SQLite немедленно возвращать ошибку, если родительский ключ с зависимыми дочерними ключами удален или изменен.

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

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

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

Кроме того, here's a link, где я нашел эту информацию. Вы также можете ознакомиться с общим номером SQLite documentation.

Смежные вопросы