android - 我可以将非主键字段作为房间中的自动生成值吗
问题描述
我有带有复合主键的表。我可以将其中一个文件设为自动生成吗?
Secenario :我有一个teacher table
包含字段 techerId、name、gender、role、department、grade 并且它具有由角色、部门和等级组成的复合主 ID。如何使teacherid自动生成?
解决方案
如果您通过THIS ANSWER,您会发现我们不能在复合主键中具有自动增量属性。因此,解决方法是使用indexing
and的概念unique constraint
。将role
, deptt
,grade
列设为您indices
并将unique
约束设置为true
. 这将确保这三个值的对始终是唯一的(如primaryKey)。然后在实体中添加techerId
as Primarykey
(autoGenerate = true)。你的entity
课程看起来像:
@Entity(tableName = "teacher",indices = arrayOf(Index(value = ["role","department","grade"],unique = true)))
public class Teacher{
@PrimaryKey(autoGenerate = true)
int teacher_id;
@ColumnInfo(name = "name")
String teacher_name;
//Rest of the fields
......
......
}
推荐阅读
- reactjs - 如何从 Intellij 运行/执行/调试 react/redux 应用程序
- git - Intellij Github Integration 给了我一个不同的帐户
- php - Laravel 6 - MariaDB 10.1:Illuminate\Database\QueryException:SQLSTATE[HY000] 迁移错误
- python - matplotlib 阻止我的其余代码运行
- python-3.x - Errno 2 没有这样的文件或目录:'credentials.json'
- java - 如何将复杂的 YAML 解析为 Java 对象层次结构(Spring Boot 配置)
- python - 如何为没有字段的模型制作 Django 夹具?
- c# - unity重新编译序列化脚本
- html - 文本框不应允许在输入字段中键入 1 到 23 以外的数字
- sql - 带有主键的 SQL 中两个连接表的大小