pub struct TriggerFirer;Expand description
Helper struct for trigger firing (execution during DML operations)
Implementations§
Source§impl TriggerFirer
impl TriggerFirer
Sourcepub fn find_triggers(
db: &Database,
table_name: &str,
timing: TriggerTiming,
event: TriggerEvent,
) -> Vec<TriggerDefinition>
pub fn find_triggers( db: &Database, table_name: &str, timing: TriggerTiming, event: TriggerEvent, ) -> Vec<TriggerDefinition>
Find triggers for a table and event
§Arguments
db- Database referencetable_name- Name of the table to find triggers fortiming- Trigger timing (BEFORE, AFTER, INSTEAD OF)event- Trigger event (INSERT, UPDATE, DELETE)
§Returns
Vector of trigger definitions matching the criteria, sorted by creation order
Sourcepub fn execute_trigger(
db: &mut Database,
trigger: &TriggerDefinition,
old_row: Option<&Row>,
new_row: Option<&Row>,
) -> Result<(), ExecutorError>
pub fn execute_trigger( db: &mut Database, trigger: &TriggerDefinition, old_row: Option<&Row>, new_row: Option<&Row>, ) -> Result<(), ExecutorError>
Execute a single trigger
§Arguments
db- Mutable database referencetrigger- Trigger definition to executeold_row- OLD row for UPDATE/DELETE (None for INSERT)new_row- NEW row for INSERT/UPDATE (None for DELETE)
§Returns
Ok(()) if trigger executed successfully, Err if execution failed
§Notes
- For ROW-level triggers, this is called once per affected row
- For STATEMENT-level triggers, this is called once per statement
- WHEN conditions are evaluated here
Sourcepub fn execute_before_triggers(
db: &mut Database,
table_name: &str,
event: TriggerEvent,
old_row: Option<&Row>,
new_row: Option<&Row>,
) -> Result<(), ExecutorError>
pub fn execute_before_triggers( db: &mut Database, table_name: &str, event: TriggerEvent, old_row: Option<&Row>, new_row: Option<&Row>, ) -> Result<(), ExecutorError>
Execute all BEFORE ROW-level triggers for an operation
§Arguments
db- Mutable database referencetable_name- Name of the tableevent- Trigger event (INSERT, UPDATE, DELETE)old_row- OLD row (for UPDATE/DELETE)new_row- NEW row (for INSERT/UPDATE)
§Returns
Ok(()) if all triggers executed successfully
Sourcepub fn execute_before_statement_triggers(
db: &mut Database,
table_name: &str,
event: TriggerEvent,
) -> Result<(), ExecutorError>
pub fn execute_before_statement_triggers( db: &mut Database, table_name: &str, event: TriggerEvent, ) -> Result<(), ExecutorError>
Sourcepub fn execute_after_triggers(
db: &mut Database,
table_name: &str,
event: TriggerEvent,
old_row: Option<&Row>,
new_row: Option<&Row>,
) -> Result<(), ExecutorError>
pub fn execute_after_triggers( db: &mut Database, table_name: &str, event: TriggerEvent, old_row: Option<&Row>, new_row: Option<&Row>, ) -> Result<(), ExecutorError>
Execute all AFTER ROW-level triggers for an operation
§Arguments
db- Mutable database referencetable_name- Name of the tableevent- Trigger event (INSERT, UPDATE, DELETE)old_row- OLD row (for UPDATE/DELETE)new_row- NEW row (for INSERT/UPDATE)
§Returns
Ok(()) if all triggers executed successfully
Sourcepub fn execute_after_statement_triggers(
db: &mut Database,
table_name: &str,
event: TriggerEvent,
) -> Result<(), ExecutorError>
pub fn execute_after_statement_triggers( db: &mut Database, table_name: &str, event: TriggerEvent, ) -> Result<(), ExecutorError>
Auto Trait Implementations§
impl Freeze for TriggerFirer
impl RefUnwindSafe for TriggerFirer
impl Send for TriggerFirer
impl Sync for TriggerFirer
impl Unpin for TriggerFirer
impl UnwindSafe for TriggerFirer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more