Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
parserpro edited this page May 15, 2014 · 6 revisions

Зачем?

Для того, чтобы всегда иметь возможность:

  • узнать, кто внёс изменения в БД
  • иметь возможность тиражировать изменения в БД на множество хостов

Принцип

Очевидно, что вносить изменения в БД надо только тогда, если их там ещё нет. Значит нам нужен простой способ узнать, есть ли в БД интересующие нас объекты и обладают ли они заданными характеристиками. Отсюда, создаём скрипт с проверками вида:

unless ( table("example")->exists ) {
 alter("example", "CREATE TABLE example (id int)");
}

что означает:

если таблица "example" не существует, то запустить код, который её создаст

Объекты

  • Таблица (Table)
  • Колонка (Column)
  • Индекс (Index)

Общие методы

  • exists - проверяет существование объекта. Возвращает: 1 - объект существует, 0 - объект не существует (справедливо для всех методов проверяющих наличие объекта)

    Пример:

    table("example")->exists;

    table("example")->column("id")->exists;

  • invalidate - убирает из кеша данные об объекте. Вызывается автоматически.

Методы таблицы

  • has_column - проверяет наличие колонки в таблице.

    table("example")->has_column('id');

  • columns - возвращает список из имен колонок, отсортированный в том порядке, в каком эти колонки определены в таблице

    my @columns = table("example")->columns;

  • has_index - проверяет наличие индекса в таблице.

    table("example")->has_index('PRIMARY');

  • column - возвращает объект колонки.

    my $column = table("example")->column("id");

Методы колонки

  • has_type - регистронезависимо сравнивает аргумент с типом колонки. 1 - одинаково, 0 - нет.

    table("example")->column("id")->has_type("int");

  • type - возвращает тип колонки.

    my $type = table("example")->column("id")->type("int");

  • default - возвращает значение по-умолчанию для колонки.

    my $def = table("example")->column("id")->default;

Методы индексов

  • has_type
  • type

AltStyle によって変換されたページ (->オリジナル) /