Skip to main content

lib/ex_sql/ast/create_trigger.ex

defmodule ExSQL.AST.CreateTrigger do
  @moduledoc """
  A `CREATE TRIGGER` statement.

  `timing` is `:before`, `:after`, or `:instead_of`; `event` is `:insert`,
  `:delete`, or `:update`; `update_columns` is the optional `UPDATE OF`
  column-key list. The body is a list of parsed statements executed with
  `OLD.`/`NEW.` references substituted per affected row.
  """

  defstruct name: nil,
            schema: nil,
            if_not_exists: false,
            timing: :before,
            event: nil,
            update_columns: nil,
            table: nil,
            table_schema: nil,
            when: nil,
            body: []

  @type t :: %__MODULE__{
          name: String.t(),
          schema: String.t() | nil,
          if_not_exists: boolean(),
          timing: :before | :after | :instead_of,
          event: :insert | :delete | :update,
          update_columns: [String.t()] | nil,
          table: String.t(),
          table_schema: String.t() | nil,
          when: term() | nil,
          body: [term()]
        }
end