Как сделать первичный ключ стартовым с 1000? sqlite.net xamarin android

Мне нужен первичный ключ, чтобы начать с 1000 . Как это можно сделать?

public class LoginTable
{

    [PrimaryKey, AutoIncrement, Column("_Id")]
    public int id { get; set; }

    public string info { get; set; }
    public string info2 { get; set; }



}

1 ответ

Вы можете изменить sqlite_sequence таблицу и назначьте любую начальную точку, которую вы хотите. Если LoginTable не был вставлен в, вам нужно будет вставить новый sqlite_sequence запись, в противном случае вам нужно будет обновить существующий sqlite_sequence запись.

sqlite_sequence содержит только два поля (name а также seq) и не содержит ни первичного ключа, ни индексов. name это имя вашего стола и seq является текущим используемым порядковым номером, следующая вставка будет увеличивать это ДО, используя его.

Пример:

using (var db = new SQLiteConnection("foo.sqlite"))
{
    db.CreateTable<LoginTable>();

    db.Execute("insert into sqlite_sequence (name, seq) values (?, ?);", new object[] { "LoginTable", 999 });

    // if LoginTable records already exist, then the `sqlite_sequence` record exists for this table and you need to update it...
    //db.Execute("update sqlite_sequence set seq = ? where name = ?;", new object[] { 999, "LoginTable"});

    var login = new LoginTable { info = "info1....", info2 = "info2....." };
    db.Insert(login);
    db.Insert(login);
    db.Insert(login);
    foreach (var item in db.Table<LoginTable>())
    {
        Console.WriteLine(item.id);
    }
}

Выход:

1000
1001
1002
Другие вопросы по тегам