【发布时间】:2021-04-11 12:27:48
【问题描述】:
我正在尝试封装 Postgresql 事务,但遇到了一些生命周期问题。
这里是代码: Code
我理解错误消息:“返回引用当前函数拥有的数据的值”
但我不知道如何将“事务”保留在我的 SQLConnection 结构中。
use postgres::{Client, NoTls, Transaction};
pub struct SQLConnection<'a> {
client: Client,
transaction: Transaction<'a>,
}
impl<'a> SQLConnection<'a> {
pub fn new(connect_string: &str) -> Self {
let mut client = Client::connect(connect_string, NoTls).unwrap();
let transaction = client.transaction().unwrap();
Self {
client,
transaction,
}
}
pub fn commit(&self) {
let _ = self.transaction.commit();
}
pub fn rollback(&self) {
let _ = self.transaction.rollback();
}
}
【问题讨论】:
-
SQL事务的概念你清楚了吗?如果没有,您应该在继续之前查看一下。
-
是的,SQL事务的概念非常清楚。它将许多查询组合在一起,以保持系统的一致性,直到您一次提交所有更改并使所有其他会话可见更改。
标签: postgresql rust lifetime