Skip to main content

Insert

Struct Insert 

Source
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: InsertVerb

Whether 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: InsertTarget

Object 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: Meta

Source location and node identity.

Trait Implementations§

Source§

impl<X: Clone + Extension> Clone for Insert<X>

Source§

fn clone(&self) -> Insert<X>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<X: Debug + Extension> Debug for Insert<X>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

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>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<X: Eq + Extension> Eq for Insert<X>

Source§

impl<X: Hash + Extension> Hash for Insert<X>

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<X: PartialEq + Extension> PartialEq for Insert<X>

Source§

fn eq(&self, other: &Insert<X>) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl<X: Extension + Render> Render for Insert<X>

Source§

fn render(&self, ctx: &RenderCtx<'_>, f: &mut Formatter<'_>) -> Result

Return the render for this value.
Source§

fn operand_binding_power(&self) -> Option<BindingPower>

The binding power this node contributes when it appears as an operand, or None (the default) for a self-delimiting node — an atom, call, or constructor — that never needs parentheses. Read more
Source§

impl<X> Serialize for Insert<X>
where X: Serialize + Extension,

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<X: Extension> Spanned for Insert<X>

Source§

fn span(&self) -> Span

Return the span for this value.
Source§

impl<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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> DynAstExt for T
where T: Extension + Render + 'static,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Erase to &dyn Any for downcasting a node back to its concrete type.
Source§

fn dyn_clone(&self) -> Box<dyn DynAstExt>

Clone into a fresh box — the object-safe stand-in for Clone (whose Self-returning signature cannot go through a vtable).
Source§

fn dyn_eq(&self, other: &dyn DynAstExt) -> bool

Structural equality against another erased node — the object-safe stand-in for 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.
Source§

fn dyn_hash(&self, state: &mut dyn Hasher)

Feed this node’s hash into an erased hasher — the object-safe stand-in for Hash::hash (whose generic H: Hasher cannot go through a vtable).
Source§

impl<T> Extension for T
where T: Clone + Debug + Eq + Hash + Spanned,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> RenderExt for T
where T: Render,

Source§

fn displayed<'a>(&'a self, ctx: &'a RenderCtx<'a>) -> Displayed<'a, T>

Pair this node with an explicit canonical RenderCtx so format!, to_string, and {} render it. This is the canonical path: the ctx’s resolver and source must match the node’s parse.
Source§

fn debug_sql<'a>(&'a self, resolver: &'a dyn Resolver) -> DebugSql<'a, Self>
where Self: Sized,

Render this node for debugging against an explicitly-supplied resolver (the debug-SQL mitigation), returning a Display adapter. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.