Могу ли я сделать поле не первичного ключа как автоматически сгенерированное значение в комнате

У меня есть таблица с составным первичным ключом. Могу ли я сделать один из поданных как автоматически сгенерированный.

Сценарий: у меня есть 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
    ......
    ......
}
Другие вопросы по тегам