Могу ли я сделать поле не первичного ключа как автоматически сгенерированное значение в комнате
У меня есть таблица с составным первичным ключом. Могу ли я сделать один из поданных как автоматически сгенерированный.
Сценарий: у меня есть teacher table
содержит поля techerId, имя, пол, роль, отдел, класс и имеет составной первичный идентификатор, который состоит из роли, отдела и класса. Как сделать teacherid автоматически генерируемым?
1 ответ
Если вы выполните ЭТОТ ОТВЕТ, вы обнаружите, что у нас не может быть свойства автоинкремента в составных первичных ключах. Таким образом, обходной путь будет использовать концепцию indexing
а также unique constraint
, Сделать role
,deptt
,grade
колонны, как вы indices
и установить unique
ограничение как true
, Это гарантирует, что пара этих трех значений всегда уникальна (например, primaryKey). Затем добавьте techerId
как 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
......
......
}