как я могу получить идентификатор последнего вставленного события - PullRequest
0 голосов
/ 17 декабря 2018

Прежде всего я использую SQLite-Net-Pcl на Xamarin.Android

У меня такой вопрос, мне нужно создать рекурсивное событие, и мне нужно подключить все эти рекурсивные события (вслучай, когда кто-то их редактирует или удаляет).И мне нужно использовать исходный идентификатор события, чтобы подключить его к другим

-> creates new recursive event  
-> gets the id of inserted event  
-> uses that id to connect all recursive events together on a "NumDocConnection"

Мой идентификатор автоматически увеличивается и является первичным ключом.

Итак, как мне получитьидентификатор последнего вставленного события?или это даже хороший способ справиться с ситуацией?

1 Ответ

0 голосов
/ 17 декабря 2018

как я могу получить идентификатор последнего вставленного события?

Первичное / авто-inc-значение на основе int получается через вставленный вами объект (объектэкземпляр обновляется в течение Insert с новым значением).

var newRecord = new Record { SomeString = "StackOverflow" };
var numofRecordsInserted = conn.Insert(newRecord);
Console.WriteLine($"Newly inserted id = {newRecord.Key}");

это даже хороший способ справиться с ситуацией

Это зависит отваше приложение.Поле pri-key / auto-inc предотвращает повторное использование сгенерированных идентификаторов, то есть до тех пор, пока база данных не будет сброшена (путем удаления / повторного создания или сброса через таблицу sqlite_sequence).

Если вы используете его в качестве "внешнего" ключа, здесь много opinions, некоторые да, некоторые нет .... Лично, если вы никогда не используете его внешне для своего приложения (т.е. оно не передается /синхронизируется через удаленный API), он работает хорошо / быстро как внешний ключ, если вы понимаете, как SQLite его создает и когда его можно / можно сбросить, см. связанные документы.

Если AUTOINCREMENTКлючевое слово появляется после INTEGER PRIMARY KEY, которое изменяет алгоритм автоматического назначения ROWID, чтобы предотвратить повторное использование ROWID в течение срока жизни базы данных.Другими словами, целью AUTOINCREMENT является предотвращение повторного использования ROWID из ранее удаленных строк.

re: https://sqlite.org/autoinc.html

...