pub struct Insert<X: Extension = NoExt> {
pub verb: InsertVerb,
pub modifier: Option<InsertModifier>,
pub or_action: Option<ConflictResolution>,
pub with: Option<With<X>>,
pub target: InsertTarget,
pub column_matching: Option<InsertColumnMatching>,
pub overriding: Option<InsertOverriding>,
pub source: InsertSource<X>,
pub row_alias: Option<TableAlias>,
pub upsert: Option<Box<Upsert<X>>>,
pub returning: Option<Returning<X>>,
pub meta: Meta,
}Expand description
An SQL insert.
Fields§
§verb: InsertVerbWhether this was spelled INSERT or MySQL REPLACE (a surface tag over one
shape; see InsertVerb).
modifier: Option<InsertModifier>Optional post-verb modifier.
or_action: Option<ConflictResolution>The SQLite INSERT OR <action> conflict-resolution algorithm on the verb, gated
by MutationSyntax::or_conflict_action; None
when unwritten (and always None on the InsertVerb::Replace spelling, which
is the conflict resolution and takes no OR <action>). A distinct slot from
upsert: the OR <action> prefix and the ON CONFLICT tail are
different constructs (SQLite forbids both on one statement), never one overloaded
field. See ConflictResolution.
with: Option<With<X>>Common table expressions visible to this statement.
target: InsertTargetObject targeted by this syntax.
column_matching: Option<InsertColumnMatching>DuckDB BY NAME / BY POSITION between target and source; None when unwritten.
overriding: Option<InsertOverriding>Optional overriding for this syntax.
source: InsertSource<X>Input source for this syntax.
row_alias: Option<TableAlias>MySQL 8.0.19+ row alias — INSERT ... VALUES (...) AS <alias>[(<col>, ...)],
the modern replacement for VALUES(<col>) inside ON DUPLICATE KEY UPDATE.
Parsed between the source and the upsert
clause and gated by the same dialect data as ON DUPLICATE KEY UPDATE
(MutationSyntax::on_duplicate_key_update) —
the alias is the input side of that MySQL upsert surface, and no shipped dialect
admits one without the other. Reuses the shared TableAlias shape (a name plus
an optional column-alias list), never a parallel alias type; None
when unwritten.
upsert: Option<Box<Upsert<X>>>Upsert clause — insert-or-update on a unique-key conflict (gated by dialect
data). One canonical field for the mutually-exclusive dialect spellings (see
Upsert); boxed because the clause is heavy (its PostgreSQL arm carries two
child lists) and absent from the common non-upsert INSERT, so the box keeps
the inline Insert lean.
returning: Option<Returning<X>>Expressions returned by the statement.
meta: MetaSource location and node identity.
Trait Implementations§
Source§impl<'de, X> Deserialize<'de> for Insert<X>where
X: Deserialize<'de> + Extension,
impl<'de, X> Deserialize<'de> for Insert<X>where
X: Deserialize<'de> + Extension,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl<X: Eq + Extension> Eq for Insert<X>
Source§impl<X: Extension + Render> Render for Insert<X>
impl<X: Extension + Render> Render for Insert<X>
Source§fn render(&self, ctx: &RenderCtx<'_>, f: &mut Formatter<'_>) -> Result
fn render(&self, ctx: &RenderCtx<'_>, f: &mut Formatter<'_>) -> Result
Source§fn operand_binding_power(&self) -> Option<BindingPower>
fn operand_binding_power(&self) -> Option<BindingPower>
None (the default) for a self-delimiting node — an atom, call, or
constructor — that never needs parentheses. Read moreimpl<X: PartialEq + Extension> StructuralPartialEq for Insert<X>
Auto Trait Implementations§
impl<X> Freeze for Insert<X>
impl<X> RefUnwindSafe for Insert<X>where
X: RefUnwindSafe,
impl<X> Send for Insert<X>where
X: Send,
impl<X> Sync for Insert<X>where
X: Sync,
impl<X> Unpin for Insert<X>where
X: Unpin,
impl<X> UnsafeUnpin for Insert<X>
impl<X> UnwindSafe for Insert<X>where
X: UnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> DynAstExt for T
impl<T> DynAstExt for T
Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&dyn Any for downcasting a node back to its concrete type.Source§fn dyn_clone(&self) -> Box<dyn DynAstExt>
fn dyn_clone(&self) -> Box<dyn DynAstExt>
Clone (whose
Self-returning signature cannot go through a vtable).Source§fn dyn_eq(&self, other: &dyn DynAstExt) -> bool
fn dyn_eq(&self, other: &dyn DynAstExt) -> bool
PartialEq (whose &Self argument cannot go through a vtable). Equal
iff other holds the same concrete type and that type deems the values
equal; differently-typed nodes are never equal.