Struct diesel::pg::TransactionBuilder
source · [−]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
sourceimpl<'a> TransactionBuilder<'a>
impl<'a> TransactionBuilder<'a>
sourcepub fn read_only(self) -> Self
pub fn read_only(self) -> Self
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(())
})?;
sourcepub fn read_write(self) -> Self
pub fn read_write(self) -> Self
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(())
})
sourcepub fn deferrable(self) -> Self
pub fn deferrable(self) -> Self
sourcepub fn not_deferrable(self) -> Self
pub fn not_deferrable(self) -> Self
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(()))
sourcepub fn read_committed(self) -> Self
pub fn read_committed(self) -> Self
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(()))
sourcepub fn repeatable_read(self) -> Self
pub fn repeatable_read(self) -> Self
Makes the transaction ISOLATION LEVEL REPEATABLE READ
Example
conn.build_transaction()
.repeatable_read()
.run(|| Ok(()))
sourcepub fn serializable(self) -> Self
pub fn serializable(self) -> Self
Makes the transaction ISOLATION LEVEL SERIALIZABLE
Example
conn.build_transaction()
.serializable()
.run(|| Ok(()))
sourcepub fn run<T, E, F>(&self, f: F) -> Result<T, E> where
F: FnOnce() -> Result<T, E>,
E: From<Error>,
pub fn run<T, E, F>(&self, f: F) -> Result<T, E> where
F: FnOnce() -> Result<T, E>,
E: From<Error>,
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
sourceimpl<'a> Clone for TransactionBuilder<'a>
impl<'a> Clone for TransactionBuilder<'a>
sourcefn clone(&self) -> TransactionBuilder<'a>
fn clone(&self) -> TransactionBuilder<'a>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl<'a> QueryFragment<Pg> for TransactionBuilder<'a>
impl<'a> QueryFragment<Pg> for TransactionBuilder<'a>
sourcefn walk_ast(&self, out: AstPass<'_, Pg>) -> QueryResult<()>
fn walk_ast(&self, out: AstPass<'_, Pg>) -> QueryResult<()>
Walk over this QueryFragment
for all passes. Read more
sourcefn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
fn to_sql(&self, out: &mut DB::QueryBuilder) -> QueryResult<()>
Converts this QueryFragment
to its SQL representation. Read more
sourcefn collect_binds(
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
fn collect_binds(
&self,
out: &mut DB::BindCollector,
metadata_lookup: &DB::MetadataLookup
) -> QueryResult<()>
Serializes all bind parameters in this query. Read more
sourcefn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
fn is_safe_to_cache_prepared(&self) -> QueryResult<bool>
Is this query safe to store in the prepared statement cache? Read more
impl<'a> Copy for TransactionBuilder<'a>
Auto Trait Implementations
impl<'a> !RefUnwindSafe for TransactionBuilder<'a>
impl<'a> !Send for TransactionBuilder<'a>
impl<'a> !Sync for TransactionBuilder<'a>
impl<'a> Unpin for TransactionBuilder<'a>
impl<'a> !UnwindSafe for TransactionBuilder<'a>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> IntoSql for T
impl<T> IntoSql for T
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more