-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Для того, чтобы всегда иметь возможность:
- узнать, кто внёс изменения в БД
- иметь возможность тиражировать изменения в БД на множество хостов
Очевидно, что вносить изменения в БД надо только тогда, если их там ещё нет. Значит нам нужен простой способ узнать, есть ли в БД интересующие нас объекты и обладают ли они заданными характеристиками. Отсюда, создаём скрипт с проверками вида:
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