【发布时间】:2018-08-04 08:25:48
【问题描述】:
我在房间里有一个实体
@Entity(foreignKeys ={
@ForeignKey(entity = Label.class, parentColumns = "_id", childColumns = "labelId", onDelete = CASCADE),
@ForeignKey(entity = Task.class, parentColumns = "_id", childColumns = "taskId", onDelete = CASCADE)
})
public class LabelOfTask extends Data{
@ColumnInfo(name = "labelId")
private Integer labelId;
@ColumnInfo(name = "taskId")
private Integer taskId;
}
该实体的sql语法如下
CREATE TABLE `LabelOfTask` (
`_id` INTEGER PRIMARY KEY AUTOINCREMENT,
`labelId` INTEGER,
`taskId` INTEGER,
FOREIGN KEY(`labelId`) REFERENCES `Label`(`_id`) ON UPDATE NO ACTION ON DELETE CASCADE ,
FOREIGN KEY(`taskId`) REFERENCES `Task`(`_id`) ON UPDATE NO ACTION ON DELETE CASCADE
);
但是如果我想将以下约束附加到表的自动生成的 sql 架构中,我需要在实体类中添加什么更改或注释
unique (labelId, taskId)
最终我想使用房间库使 labelId 和 taskId 的组合在表(或房间实体)中唯一。
【问题讨论】:
-
不支持对列的普通 UNIQUE 约束,而不是通过索引。
-
索引?你的意思是主键?
标签: android sqlite database-design android-room android-architecture-components