pub struct CreateTriggerStatement {
pub name: String,
pub or_replace: bool,
pub timing: TriggerTiming,
pub events: Vec<TriggerEvent>,
pub table: String,
pub for_each: TriggerForEach,
pub function: String,
pub update_columns: Vec<String>,
pub when_condition: Option<Expr>,
}Expand description
v7.12.4 — CREATE [OR REPLACE] TRIGGER. Always row-level
(FOR EACH ROW) in v7.12.4 — statement-level triggers parse
but the executor refuses them. WHEN (cond) clauses are out
of scope; the trigger function can short-circuit on a leading
IF inside its body once v7.12.5 lands IF.
Fields§
§name: String§or_replace: bool§timing: TriggerTiming§events: Vec<TriggerEvent>At least one event; INSERT OR UPDATE OR DELETE parses to
three entries in order.
table: String§for_each: TriggerForEachFOR EACH ROW vs FOR EACH STATEMENT. v7.12.4 ships
only Row; Statement parses but the executor refuses.
function: StringName of the function to invoke. The function must exist at
CREATE TRIGGER time — PG18-measured (round 753): PG refuses a
forward reference (function no_such_fn() does not exist), so
requiring it IS the PG behaviour (the old note claimed the
opposite).
update_columns: Vec<String>v7.13.0 — UPDATE OF col, col, … column-list filter
(mailrs round-5 G7). Non-empty only when the events list
contains UPDATE and the user wrote the column-list filter.
PG fires the trigger only when at least one of these
columns appears in the SET clause; SPG conservatively
fires on any UPDATE matching the listed columns or
rewriting them at the row level. Empty vec = no filter
(fire on every UPDATE).
when_condition: Option<Expr>v7.39 (round 138) — WHEN ( condition ) row-level filter: the row
trigger fires only when the condition (over NEW / OLD) is true. None
= no WHEN (fire unconditionally). Not allowed on INSTEAD OF triggers.
Trait Implementations§
Source§impl Clone for CreateTriggerStatement
impl Clone for CreateTriggerStatement
Source§fn clone(&self) -> CreateTriggerStatement
fn clone(&self) -> CreateTriggerStatement
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more