Для начала, я полностью согласен с комментариями, это звучит как плохая архитектура.Если операция сценария оболочки не зависит от программы, взаимодействующей с базой данных, этот вызов должен быть встроен в ваш код путем вызова какой-либо системной команды, в драйвере, используемом вашей программой, или как часть основного кода.
В Java это можно сделать с помощью класса ProcessBuilder
, метода system(<command>)
в ruby и os.system(<command>)
в python.
В oracle можно писать триггеры в java, которые можно использовать для созданиясистемный вызов, однако эта функция не существует в sqlite.
Если это абсолютно необходимо, я бы предложил написать обертку вокруг вашего драйвера sqlite db и сделать там системный вызов.
Возможно, вы могли бы расширить то, что вам действительно нужно делать, и мы могли бы предложить альтернативные подходы
Обновление:
Вы можете создать функцию обратного вызова в c / c ++, используя c/ c ++ sqlite интерфейс (см. Обратные вызовы уведомлений об изменении данных в http://www.sqlite.org/capi3ref.html), которые вы можете вызывать в своем триггере
CREATE TRIGGER <trigger name>
INSERT ON <table_name>
BEGIN
SELECT callback_function()
END;
Затем вы можете использовать эту функцию обратного вызова для вызова сценария оболочки, звучит относительно сложно, нодовольно интересно.