首先,我在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?还是这是应对情况的好方法?
答案 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。