我正在创建一个Entity(Room Persistence lib)类Food,我想把它foodId
作为自动增量.
@Entity
class Food(var foodName: String, var foodDesc: String, var protein: Double, var carbs: Double, var fat: Double)
{
@PrimaryKey
var foodId: Int = 0
var calories: Double = 0.toDouble()
}
Run Code Online (Sandbox Code Playgroud)
如何设置foodId
自动增量字段?
我刚刚在房间里找到@PrimaryKey注释.所以,如果我想制作复合键,那么如何才能在MVVM中实现呢?
我在房间里有一个实体
@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;
}
Run Code Online (Sandbox Code Playgroud)
这个实体的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 …
Run Code Online (Sandbox Code Playgroud) sqlite android database-design android-room android-architecture-components
我有带有复合主键的表。我可以将其中一个文件设为自动生成吗?
Secenario :我有一个teacher table
包含字段 techerId、姓名、性别、角色、部门、等级的字段,它具有由角色、部门和等级组成的复合主 ID。如何使teacherid自动生成?
我有这样的代码
c.execute('CREATE TABLE IF NOT EXISTS base (ID INTEGER NOT NULL, col2 TEXT NOT NULL, col3 INTEGER, PRIMARY KEY(ID, col2))')
Run Code Online (Sandbox Code Playgroud)
这段代码给了我一个sqlite3.IntegrityError异常,即使我非常确定我是第一次写这个记录.
所以,我试过了
c.execute('CREATE TABLE IF NOT EXISTS base (ID INTEGER, col2 TEXT, col3 INTEGER, PRIMARY KEY(ID, col2))')
Run Code Online (Sandbox Code Playgroud)
这会在基表BUT中精细插入行,ID列根本不会自动递增.
我能做什么?任何的想法?
android ×4
android-room ×4
sqlite ×3
android-architecture-components ×1
kotlin ×1
mvvm ×1
python ×1