box.ctl.on_schema_init()
-
box.ctl.
on_schema_init
(trigger-function[, old-trigger-function])¶ Создать триггер
schema_init
. Функция триггера будет выполнена, когда box.cfg{} произойдет в первый раз. То есть триггерschema_init
вызывается до начала конфигурирования и восстановления сервера, и поэтомуbox.ctl.on_schema_init
должен быть вызван до вызоваbox.cfg
.Параметры: - trigger-function (
function
) – функция, в которой будет триггер - old-trigger-function (
function
) – существующая функция с триггером, которую заменит новая
возвращает: nil или указатель функции
Если указаны параметры (nil, old-trigger-function), старый триггер будет удален.
Обычно используется следующее: сделать триггерную функцию
schema_init
, которая создает триггерную функциюbefore_replace
на системном спейсе. Таким образом, поскольку системные спейсы создаются при старте сервера, триггерыbefore_replace
будут активированы для каждого кортежа в каждом системном спейсе. Например, такой триггер может изменить механизм хранения заданного спейса, или сделать заданный спейс локальной репликой во время загрузки реплики. Выполнение такого изменения послеbox.cfg
не является надежным, поскольку другие подключения могут использовать базу данных до внесения изменения.Подробная информация о характеристиках триггера находится в разделе Триггеры.
Пример:
Предположим, что до того, как сервер будет полностью готов к подключениям, вы хотите убедиться, что движком
space_name
является vinyl. Поэтому вы хотите сделать триггер, который будет активирован при вставке кортежа в системный спейс_space
. В этом случае может получиться мастер, который имеет space-name сengine='memtx'
и реплику, которая имеет space_name сengine='vinyl'
, с тем же самым содержимым.function function_for_before_replace(old, new) if old == nil and new ~= nil and new[3] == 'space_name' and new[4] ~= 'vinyl' then return new:update{{'=', 4, 'vinyl'}} end end box.ctl.on_schema_init(function() box.space._space:before_replace(function_for_before_replace) end) box.cfg{replication='master_uri', ...}
- trigger-function (