活动 Android onDelete 和 onDelete
Active Android onDelete and onDelete
我在我的项目中使用 Active Android。试图了解更多关于它的信息,特别是关于 table 项属性 -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
}
谁能post给个link详细的解释,或者解释一下这个东东。
PS 我浏览了很多网站,包括 https://guides.codepath.com/android/ActiveAndroid-Guide 和
https://github.com/pardom/ActiveAndroid/wiki/Getting-started
别介绍我,这个问题没有解释。
此外,我还可以为我的模型字段设置哪些其他属性,例如 onDelete?
这些不是 active android 的属性,而是 SQL。我猜测活动 android 使用了 Android 中的 SQLite 数据库。如果是这样,它们的含义如下:
NO ACTION:配置"NO ACTION"意味着:当父键被修改或从数据库中删除时,不采取任何特殊操作。
RESTRICT:"RESTRICT" 动作表示禁止应用程序删除(对于 ON DELETE RESTRICT)或修改(对于 ON UPDATE RESTRICT)父键存在一个或多个映射到它的子键。 RESTRICT 操作和正常外键约束强制执行的效果之间的区别在于,RESTRICT 操作处理在字段更新后立即发生 - 而不是在当前语句的末尾,因为它会使用立即约束,或者在末尾当前事务的处理方式与延迟约束一样。即使它所附加的外键约束被推迟,如果删除或修改具有依赖子键的父键,配置 RESTRICT 操作会立即导致 SQLite 到 return 错误。
SET NULL:如果配置的动作是"SET NULL",那么当父键被删除(对于ON DELETE SET NULL)或修改(对于ON UPDATE SET NULL),映射到父键的子 table 中所有行的子键列都设置为包含 SQL NULL 值。
SET DEFAULT:"SET DEFAULT" 操作类似于 "SET NULL",除了每个子键列都设置为包含列默认值而不是 NULL。有关如何将默认值分配给 table 列的详细信息,请参阅 CREATE TABLE 文档。
CASCADE:"CASCADE" 操作将对父键的删除或更新操作传播到每个从属子键。对于 "ON DELETE CASCADE" 操作,这意味着与已删除的父行关联的子 table 中的每一行也将被删除。对于 "ON UPDATE CASCADE" 操作,这意味着存储在每个依赖子键中的值被修改以匹配新的父键值。
此外,here's a link where I found this information. You can also check out the general SQLite documentation.
我在我的项目中使用 Active Android。试图了解更多关于它的信息,特别是关于 table 项属性 -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
}
谁能post给个link详细的解释,或者解释一下这个东东。 PS 我浏览了很多网站,包括 https://guides.codepath.com/android/ActiveAndroid-Guide 和 https://github.com/pardom/ActiveAndroid/wiki/Getting-started 别介绍我,这个问题没有解释。
此外,我还可以为我的模型字段设置哪些其他属性,例如 onDelete?
这些不是 active android 的属性,而是 SQL。我猜测活动 android 使用了 Android 中的 SQLite 数据库。如果是这样,它们的含义如下:
NO ACTION:配置"NO ACTION"意味着:当父键被修改或从数据库中删除时,不采取任何特殊操作。
RESTRICT:"RESTRICT" 动作表示禁止应用程序删除(对于 ON DELETE RESTRICT)或修改(对于 ON UPDATE RESTRICT)父键存在一个或多个映射到它的子键。 RESTRICT 操作和正常外键约束强制执行的效果之间的区别在于,RESTRICT 操作处理在字段更新后立即发生 - 而不是在当前语句的末尾,因为它会使用立即约束,或者在末尾当前事务的处理方式与延迟约束一样。即使它所附加的外键约束被推迟,如果删除或修改具有依赖子键的父键,配置 RESTRICT 操作会立即导致 SQLite 到 return 错误。
SET NULL:如果配置的动作是"SET NULL",那么当父键被删除(对于ON DELETE SET NULL)或修改(对于ON UPDATE SET NULL),映射到父键的子 table 中所有行的子键列都设置为包含 SQL NULL 值。
SET DEFAULT:"SET DEFAULT" 操作类似于 "SET NULL",除了每个子键列都设置为包含列默认值而不是 NULL。有关如何将默认值分配给 table 列的详细信息,请参阅 CREATE TABLE 文档。
CASCADE:"CASCADE" 操作将对父键的删除或更新操作传播到每个从属子键。对于 "ON DELETE CASCADE" 操作,这意味着与已删除的父行关联的子 table 中的每一行也将被删除。对于 "ON UPDATE CASCADE" 操作,这意味着存储在每个依赖子键中的值被修改以匹配新的父键值。
此外,here's a link where I found this information. You can also check out the general SQLite documentation.