主动和Android onDelete onDelete(Active Android onDele

2019-10-23 18:41发布

我使用的Android活跃在我的项目。 想了解更多内容,特殊的有关属性-smth像ForeignKeyAction表项。

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

@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我探索了很多网站,inluding https://guides.codepath.com/android/ActiveAndroid-Guide和https://github.com/pardom/ActiveAndroid/wiki/Getting-started不是指我有,没有解释这个问题。

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

Answer 1:

这些都是不活跃的Android的特性,而是SQL。 我猜测,Android活跃利用了Android的SQLite数据库。 如果是这样的话,这里是它们的含义:

NO ACTION:配置“不采取行动”的意思就是:当父项被修改或删除数据库中,没有采取特别的行动。

RESTRICT:“限制”操作意味着该应用程序是从删除禁止(为ON DELETE RESTRICT)或修改(对于ON UPDATE RESTRICT)母密钥当存在映射到它的一个或多个子密钥。 一个制约作用和正常的外键约束的执行效果之间的区别是,只要更新域制约作用处理发生的地方 - 而不是在当前语句的结束,因为它将立即约束,或在年底当前事务的,因为它会与延迟的约束。 即使连接到外键约束被推迟,配置制约作用导致的SQLite立即返回一个错误,如果有相关的子键父键被删除或修改。

SET NULL:如果配置的操作为“SET NULL”,那么当父项被删除(对于ON DELETE SET NULL)或修改(ON UPDATE SET NULL),所有行的子键列在映射子表父键被设置为包含SQL NULL值。

SET默认 :“设为默认值”动作类似“SET NULL”,除了每个子键列设置为包含列默认值,而不是NULL。 详情请参阅在CREATE TABLE文档了解如何默认值分配给表列。

CASCADE:A“CASCADE”动作传播在上级键,每个受抚养子女键删除或更新操作。 对于“ON DELETE CASCADE”行动,这意味着,与删除父行相关联的子表的每一行也被删除。 对于“ON UPDATE CASCADE”动作,这意味着存储在每个受抚养子女键值会被修改,以符合新的父键值。

此外, 这里有一个链接 ,我发现这个信息。 您还可以检查出一般SQLite的文档 。



文章来源: Active Android onDelete and onDelete