Могу ли я сделать поле не первичного ключа как автоматически сгенерированное значение в комнате - PullRequest
0 голосов
/ 13 февраля 2019

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

Сценарий: у меня есть teacher table, содержащий поля techerId, имя, пол, роль, отдел, класс, и он имеет составной первичный идентификатор, который состоит из роли, отдела и класса.Как сделать teacherid автоматически генерируемым?

1 Ответ

0 голосов
/ 14 февраля 2019

Если вы выполните ЭТО ОТВЕТ , вы обнаружите, что у нас не может быть свойства автоинкремента в составных первичных ключах.Таким образом, обходной путь должен был бы использовать понятия 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
    ......
    ......
}
...