ExSQL.AST.CreateTable (exsql v0.1.4)

Copy Markdown

A CREATE TABLE statement.

Summary

Types

A table-level constraint, after the column list.

t()

Types

fk_action()

@type fk_action() :: :no_action | :restrict | :set_null | :set_default | :cascade

A table-level constraint, after the column list.

  • {:primary_key, name | nil, [col_name]} — composite PK

  • {:unique, name | nil, [col_name]} — composite UNIQUE

  • {:check, name | nil, expr} — CHECK expression

  • {:foreign_key, name | nil, [col_name], ref_table, [ref_col], actions} — table FK; actions is %{on_delete: action, on_update: action, deferred: boolean} with action one of :no_action | :restrict | :set_null | :set_default | :cascade

fk_actions()

@type fk_actions() :: %{
  on_delete: fk_action(),
  on_update: fk_action(),
  deferred: boolean()
}

t()

@type t() :: %ExSQL.AST.CreateTable{
  columns: [ExSQL.AST.ColumnDef.t()],
  constraints: [table_constraint()],
  if_not_exists: boolean(),
  name: String.t(),
  query: ExSQL.Parser.statement() | nil,
  schema: String.t() | nil,
  strict: boolean(),
  without_rowid: boolean()
}

table_constraint()

@type table_constraint() ::
  {:primary_key, String.t() | nil, [String.t()]}
  | {:unique, String.t() | nil, [String.t()]}
  | {:check, String.t() | nil, ExSQL.Parser.expr()}
  | {:foreign_key, String.t() | nil, [String.t()], String.t(), [String.t()],
     fk_actions()}