pub struct TransactionBuilder<'a> { /* private fields */ }
Expand description

Used to build a transaction, specifying additional details.

This struct is returned by .build_transaction. See the documentation for methods on this struct for usage examples. See the PostgreSQL documentation for SET TRANSACTION for details on the behavior of each option.

Implementations

Makes the transaction READ ONLY

Example
conn.build_transaction()
    .read_only()
    .run::<_, diesel::result::Error, _>(|| {
        let read_attempt = users.select(name).load::<String>(&conn);
        assert!(read_attempt.is_ok());

        let write_attempt = diesel::insert_into(users)
            .values(name.eq("Ruby"))
            .execute(&conn);
        assert!(write_attempt.is_err());

        Ok(())
    })?;

Makes the transaction READ WRITE

This is the default, unless you’ve changed the default_transaction_read_only configuration parameter.

Example
conn.build_transaction()
    .read_write()
    .run(|| {
        let read_attempt = users.select(name).load::<String>(&conn);
        assert!(read_attempt.is_ok());

        let write_attempt = diesel::insert_into(users)
            .values(name.eq("Ruby"))
            .execute(&conn);
        assert!(write_attempt.is_ok());

        Ok(())
    })

Makes the transaction DEFERRABLE

Example
conn.build_transaction()
    .deferrable()
    .run(|| Ok(()))

Makes the transaction NOT DEFERRABLE

This is the default, unless you’ve changed the default_transaction_deferrable configuration parameter.

Example
conn.build_transaction()
    .not_deferrable()
    .run(|| Ok(()))

Makes the transaction ISOLATION LEVEL READ COMMITTED

This is the default, unless you’ve changed the default_transaction_isolation_level configuration parameter.

Example
conn.build_transaction()
    .read_committed()
    .run(|| Ok(()))

Makes the transaction ISOLATION LEVEL REPEATABLE READ

Example
conn.build_transaction()
    .repeatable_read()
    .run(|| Ok(()))

Makes the transaction ISOLATION LEVEL SERIALIZABLE

Example
conn.build_transaction()
    .serializable()
    .run(|| Ok(()))

Runs the given function inside of the transaction with the parameters given to this builder.

Returns an error if the connection is already inside a transaction, or if the transaction fails to commit or rollback

If the transaction fails to commit due to a SerializationFailure, a rollback will be attempted. If the rollback succeeds, the original error will be returned, otherwise the error generated by the rollback will be returned. In the second case the connection should be considered broken as it contains a uncommitted unabortable open transaction.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Walk over this QueryFragment for all passes. Read more

Converts this QueryFragment to its SQL representation. Read more

Serializes all bind parameters in this query. Read more

Is this query safe to store in the prepared statement cache? Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

Convert self to an expression for Diesel’s query builder. Read more

Convert &self to an expression for Diesel’s query builder. Read more

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.