Tim*_*imo 13 sqlite android ormlite
由于无法在SQLite中使用"ALTER TABLE"语句添加外键,因此我坚持如何配置数据库以强制执行有效的外键,或执行级联删除而不显式代码开销.
任何人都知道如何在SQLite下使用ORMLite实现这一目标?
wsa*_*lle 22
要详细说明Gray的精彩答案(对于偶然发现此问题的任何其他人),您可以使用columnDefinition注释来定义外键约束和级联删除.
首先,3.6.19中的SQLite中添加了外键约束,这意味着您可以在Android 2.2或更高版本中使用它们(因为2.2随附SQLite 3.6.22).但是,默认情况下不启用外键约束.要启用它们,请使用此答案中的技巧.
这是使用columnDefinition注释的示例.假设您正在引用的表/对象被调用parent,其主键为id.
@DatabaseField(foreign = true,
columnDefinition = "integer references parent(id) on delete cascade")
private Parent parent;
Run Code Online (Sandbox Code Playgroud)
请注意,String值的格式不包括列名(这是columnName注释的用途).
如何配置我的数据库以强制执行有效的外键,或执行级联删除而不显式代码开销.
ORMLite支持注释@Timo中的columnDefinition="..."字段@DatabaseFiled.我不确定它是否为您提供了所需的功能,但它确实允许您拥有自定义列定义.
http://ormlite.com/javadoc/ormlite-core/com/j256/ormlite/field/DatabaseField.html#columnDefinition()
如果没有,那么我担心在这种情况下你可能必须在ORMLite之外创建数据库.您可以使用TableUtils.getCreateTableStatements()获取创建表所需的语句,并添加所需的强制和级联语句.以下是该方法的javadoc.
| 归档时间: |
|
| 查看次数: |
8359 次 |
| 最近记录: |