Как сделать первичный ключ стартовым с 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