Skip to main content

Transaction

Struct Transaction 

Source
pub struct Transaction<'conn> { /* private fields */ }
Expand description

An RAII transaction guard that automatically rolls back on drop if not committed.

Created via Connection::transaction(). This exclusively borrows the connection for the lifetime of the transaction, preventing any other code from using the raw connection while the transaction is active. This is enforced at compile time by Rust’s borrow checker.

§Example

// Transaction auto-rolls back if commit() is not called
let txn = conn.transaction()?;
txn.execute_command("INSERT INTO users VALUES (1, 'Alice')")?;
txn.execute_command("INSERT INTO users VALUES (2, 'Bob')")?;
txn.commit()?;

Implementations§

Source§

impl<'conn> Transaction<'conn>

Source

pub fn commit(self) -> Result<()>

Commits the transaction.

§Errors

Returns the error from Connection::commit. The transaction is marked completed regardless, so the drop guard will not re-issue a rollback.

Source

pub fn rollback(self) -> Result<()>

Rolls back the transaction explicitly.

§Errors

Returns the error from Connection::rollback. The transaction is marked completed regardless.

Source

pub fn connection(&self) -> &Connection

Returns a reference to the underlying connection.

Source

pub fn execute_command(&self, sql: &str) -> Result<u64>

Executes a SQL command within this transaction.

§Errors

Forwards the error from Connection::execute_command.

Source

pub fn execute_query(&self, query: &str) -> Result<Rowset<'_>>

Executes a query and returns streaming results within this transaction.

§Errors

Forwards the error from Connection::execute_query.

Source

pub fn fetch_one<Q: AsRef<str>>(&self, query: Q) -> Result<Row>

Fetches a single row from a query.

§Errors

Forwards the error from Connection::fetch_one.

Source

pub fn fetch_optional<Q: AsRef<str>>(&self, query: Q) -> Result<Option<Row>>

Fetches an optional single row from a query.

§Errors

Forwards the error from Connection::fetch_optional.

Source

pub fn fetch_all<Q: AsRef<str>>(&self, query: Q) -> Result<Vec<Row>>

Fetches all rows from a query.

§Errors

Forwards the error from Connection::fetch_all.

Source

pub fn fetch_scalar<T, Q>(&self, query: Q) -> Result<T>
where T: ScalarValue + RowValue, Q: AsRef<str>,

Fetches a single scalar value from a query.

§Errors

Forwards the error from Connection::fetch_scalar.

Source

pub fn fetch_optional_scalar<T, Q>(&self, query: Q) -> Result<Option<T>>
where T: ScalarValue + RowValue, Q: AsRef<str>,

Fetches an optional scalar value from a query.

§Errors

Forwards the error from Connection::fetch_optional_scalar.

Source

pub fn query_count(&self, query: &str) -> Result<i64>

Queries for a count value, defaulting to 0 if NULL.

§Errors

Forwards the error from Connection::query_count.

Trait Implementations§

Source§

impl<'conn> Debug for Transaction<'conn>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for Transaction<'_>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

§

impl<'conn> Freeze for Transaction<'conn>

§

impl<'conn> !RefUnwindSafe for Transaction<'conn>

§

impl<'conn> Send for Transaction<'conn>

§

impl<'conn> Sync for Transaction<'conn>

§

impl<'conn> Unpin for Transaction<'conn>

§

impl<'conn> UnsafeUnpin for Transaction<'conn>

§

impl<'conn> !UnwindSafe for Transaction<'conn>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more