Max*_*nko 7 sqlite rust rust-diesel
DieselSqliteBackend
没有实现该SupportsReturningClause
特征,因此该get_result
方法不能用于检索新创建的值。
还有其他方法可以找出插入行的 id 吗?Python对此有一个解决方案。到目前为止我找到的唯一解决方案是使用 UUID 作为 ids 而不是自动增量字段。
这里的根本问题是SQLite
不支持 SQLRETURNING
子句,该子句允许您返回自动生成的 id 作为插入语句的一部分。
由于OP仅提供了一个一般性问题,我无法举例说明如何使用柴油来实现该问题。
有多种方法可以解决此问题。所有这些都要求您执行第二个查询。
按 id 排序并仅选择最大的 id。这是最直接的解决办法。它直接显示了执行第二次查询的问题,因为在任何时间点都可能存在竞争插入,这样您就可以返回错误的 id(至少如果您不使用事务)。
使用last_insert_rowid()
SQL函数接收最后插入列的行 ID。如果没有配置,否则这些行 ID 与您的自动增量主整数键匹配。在柴油机方面,您可以使用它no_arg_sql_function!()
来定义板条箱中的底层 sql 函数。