Документация / DBML

TablePartial

TablePartial — многократно используемые определения столбцов, настроек и индексов.

Синтаксис

Определение:

TablePartial partial_name [table_settings] {
  field_name field_type [field_settings]
  indexes {
    (column_name) [index_settings]
  }
}

Использование — имя с префиксом ~ внутри таблицы:

Table table_name {
  ~partial_name
  field_name field_type
  ~another_partial
}

Пример

TablePartial base_template [headerColor: #ff0000] {
  id int [pk, not null]
  created_at timestamp [default: `now()`]
  updated_at timestamp [default: `now()`]
}

TablePartial soft_delete_template {
  delete_status boolean [not null]
  deleted_at timestamp [default: `now()`]
}

TablePartial email_index {
  email varchar [unique]
  indexes {
    email [unique]
  }
}

Table users {
  ~base_template
  ~email_index
  name varchar
  ~soft_delete_template
}

Итоговая таблица:

Table users [headerColor: #ff0000] {
  id int [pk, not null]
  created_at timestamp [default: `now()`]
  updated_at timestamp [default: `now()`]
  email varchar [unique]
  name varchar
  delete_status boolean [not null]
  deleted_at timestamp [default: `now()`]
  indexes {
    email [unique]
  }
}

Разрешение конфликтов

Если несколько частей определяют один и тот же столбец, настройку или индекс, приоритет такой:

  1. определение в самой таблице (наивысший приоритет);
  2. часть, подключённая последней;
  3. более ранние части (наименьший приоритет).

Обновлено: 27 сентября 2026 г.