如何获取上次插入事件的ID

时间:2018-12-17 12:09:44

标签: android sqlite xamarin xamarin.android sqlite-net

首先,我在Xamarin.Android上使用SQLite-Net-Pcl

我的问题是,我需要创建一个递归事件, 并且我需要连接所有这些递归事件(如果有人编辑或删除它们)。 我需要使用原始事件的ID将其连接到其他事件

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

我的ID是自动递增的,并且是主键。

那么,如何获取上次插入事件的ID?还是这是应对情况的好方法?

1 个答案:

答案 0 :(得分:1)

  

如何获取上次插入事件的ID?

基于int的主/自动增量值是通过插入的对象获得的(对象实例在Insert期间使用新值进行了更新)。

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

这是处理情况的好方法

这取决于您的应用程序。 pri-key / auto-inc字段确实可以防止重用生成的ID,即在重置数据库之前(通过删除/重新创建或通过sqlite_sequence表进行重置)。

您应该将它用作“外来”键吗?这里有很多opinions,有些是,有些不是。。。个人而言,如果您从未在应用程序外部使用它(即,它不会传输/同步)通过远程API),如果您了解SQLite是如何创建它以及何时可以/可以对其进行重置的,那么它可以作为外键很好/快速地工作,请参阅链接的文档。

  

如果在INTEGER PRIMARY KEY之后出现AUTOINCREMENT关键字,则会更改自动ROWID分配算法,以防止在数据库的生命周期内重复使用ROWID。换句话说,AUTOINCREMENT的目的是防止重复使用先前删除的行中的ROWID。

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