我使用的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我可以设置为我的模型领域?
这些都是不活跃的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的文档 。