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

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

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


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

  • обновить ...> вызвать скрипт один раз
  • вставить в ...> вызвать скрипт один раз
  • bcp into> call script один раз
12.12.2008 21:16:06
Что будет делать скрипт на продажу? Это для всех изменений во всех таблицах?
dkretz 12.12.2008 23:23:27
1 ОТВЕТ

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


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

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

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

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

1
15.12.2008 16:46:03
Не уверен, что вы захотите вызвать его 100 раз, если у вас есть SQL-запрос, который обновляет 100 строк.
dkretz 12.12.2008 23:22:47
В sybase триггеры запускаются один раз за оператор, а не за строку.
Michael Sharek 12.12.2008 23:42:52