Как мне вызвать скрипт, когда данные таблицы изменяются в Sybase 12.5? - PullRequest
0 голосов
/ 13 декабря 2008

ОС - это UNIX. Я хотел бы вызвать сценарий оболочки для внешней проверки при изменении данных в таблице. Возможно ли это, и если да, то как.

Большое спасибо.


Обновлено: в идеале я хотел бы вызвать свой внешний скрипт один раз для любой отдельной операции: т.е.

  • обновить ...> один раз вызвать скрипт
  • вставить в ...> скрипт вызова один раз
  • bcp в> скрипт вызова один раз

1 Ответ

1 голос
/ 13 декабря 2008

Я думаю, вы могли бы вызвать xp_cmdshell изнутри триггера.


Редактировать: Как уже упоминалось в комментариях, триггер срабатывает только один раз за оператор модификации данных. (См. книги в сети .) Поэтому, если у вас есть оператор обновления, который затрагивает 100 строк, триггер сработает только один раз, а не 100 раз. Это должно позаботиться о ваших первых двух пунктах (обновить, вставить в).

Триггер не сработает на BCP. Но bcp должен происходить из командной строки, поэтому не уверен, почему бы вам просто не добавить свой сценарий оболочки после каждой команды bcp?

Еще немного информации о вызове xp_cmdshell из триггера здесь .

Некоторые дальнейшие комментарии: Вы действительно не описали свою среду или то, что вы пытаетесь достичь. Если вы находитесь в среде OLTP, вам нужно убедиться, что ваш сценарий оболочки будет работать нормально, если с таблицей происходит несколько обновлений одновременно. Если 3 пользователя будут обновлять одновременно, будет ли работать ваш скрипт, если три из них запущены одновременно? Если вы делаете это как часть какой-то OLAP или пакетной системы, я не уверен, почему бы вам не добавить сценарий оболочки в поток работ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...