Rust Diesel sql_query 插入带有返回的示例
Rust Diesel sql_query Insert example with Returning
我正在尝试使用 Diesel sql_query 和 return 插入记录的 ID 进行插入,但出现错误
这是我的代码
let demo_id: Vec<i32> = sql_query("insert into demo (demoname, description, demovalue) values (?, ?, 2) returning demoid")
.bind::<Text, _>("Demo1")
.bind::<Text, _>("Demo2")
.get_results(&conn).unwrap();
获取错误
the trait `QueryableByName<Pg>` is not implemented for `i32`
提前致谢
正如 sql_query
的文档中所说:
Unlike most queries in Diesel, sql_query will deserialize its data by
name, not by index. That means that you cannot deserialize into a
tuple, and structs which you deserialize from this function will need
to have #[derive(QueryableByName)]
因此,您必须为要反序列化的数据创建一个结构:
#[derive(QueryableByName)]
struct InsertedRowId {
#[sql_type = "Integer"]
demoid: i32
}
// Then:
let demo_id: Vec<InsertedRowId> = sql_query("insert into demo (demoname, description, demovalue) values (, , 2) returning demoid")
.bind::<Text, _>("Demo1")
.bind::<Text, _>("Demo2")
.get_results(&conn).unwrap();
请注意,查询中返回的列的名称必须与相应的结构字段同名。
另请参阅 QueryableByName
的文档。
最后 - 请注意,对于 postgresql,查询中的占位符是使用语法 </code>、<code>
等
指定的
我正在尝试使用 Diesel sql_query 和 return 插入记录的 ID 进行插入,但出现错误
这是我的代码
let demo_id: Vec<i32> = sql_query("insert into demo (demoname, description, demovalue) values (?, ?, 2) returning demoid")
.bind::<Text, _>("Demo1")
.bind::<Text, _>("Demo2")
.get_results(&conn).unwrap();
获取错误
the trait `QueryableByName<Pg>` is not implemented for `i32`
提前致谢
正如 sql_query
的文档中所说:
Unlike most queries in Diesel, sql_query will deserialize its data by name, not by index. That means that you cannot deserialize into a tuple, and structs which you deserialize from this function will need to have #[derive(QueryableByName)]
因此,您必须为要反序列化的数据创建一个结构:
#[derive(QueryableByName)]
struct InsertedRowId {
#[sql_type = "Integer"]
demoid: i32
}
// Then:
let demo_id: Vec<InsertedRowId> = sql_query("insert into demo (demoname, description, demovalue) values (, , 2) returning demoid")
.bind::<Text, _>("Demo1")
.bind::<Text, _>("Demo2")
.get_results(&conn).unwrap();
请注意,查询中返回的列的名称必须与相应的结构字段同名。
另请参阅 QueryableByName
的文档。
最后 - 请注意,对于 postgresql,查询中的占位符是使用语法 </code>、<code>
等