有效的Android onDelete和onDelete

时间:2015-07-09 17:24:47

标签: android activeandroid

我在项目中使用Active Android。试图了解更多关于它的信息,特别是关于表项属性-smth,如ForeignKeyAction。

我希望我的模型只删除自己,如果发生删除操作,而不是删除它的孩子。 我发现的代码 -

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

但我不知道什么标志回答什么属性 - 有很多 - 表格文档

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

任何人都可以发布详细解释的链接,或解释这些内容。 PS我探索了很多网站,包括https://guides.codepath.com/android/ActiveAndroid-Guidehttps://github.com/pardom/ActiveAndroid/wiki/Getting-started 不要在那里推荐我,这个问题没有解释。

此外,还有什么其他属性,比如onDelete我可以设置为我的模型字段?

1 个答案:

答案 0 :(得分:3)

这些不是主动android的属性,而是SQL。我猜这个活跃的android利用Android中的SQLite数据库。如果是这种情况,这是他们的意思:

NO ACTION :配置“NO ACTION”意味着:当从数据库中修改或删除父键时,不会采取任何特殊操作。

RESTRICT :“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 DEFAULT”操作类似于“SET NULL”,但每个子键列都设置为包含列默认值而不是NULL。有关如何为表列分配默认值的详细信息,请参阅CREATE TABLE文档。

CASCADE :“CASCADE”操作将父键上的删除或更新操作传播到每个从属子键。对于“ON DELETE CASCADE”操作,这意味着子表中与已删除的父行关联的每一行也将被删除。对于“ON UPDATE CASCADE”操作,这意味着修改存储在每个从属子键中的值以匹配新的父键值。

此外,here's a link我找到了这些信息。您还可以查看常规SQLite documentation