2008-12-12 15 views
0

OS est UNIX. Je voudrais appeler un script shell pour effectuer une validation externe lorsque les données d'une table changent. Est-ce possible, et si oui, comment?Comment appeler un script lorsque les données d'une table changent dans Sybase 12.5?

Merci beaucoup.


Mise à jour: Idéalement, je voudrais appeler mon script externe une fois pour toute opération discrète: à savoir

  • mise à jour ...> script une fois appel
  • insert dans ...> Appel une fois le script
  • bcp dans> script une fois appel
+0

Que ferait le script de vente? Est-ce pour tous les changements dans toutes les tables? – dkretz

+0

clarifié, désolé! – Brabster

Répondre

1

Je pense que vous pourriez appeler xp_cmdshell à partir d'un Trigge r. Edit: Comme mentionné dans les commentaires, un déclencheur se déclenche une seule fois par instruction de modification de données. (Voir books online.) Ainsi, si vous avez une instruction de mise à jour affectant 100 lignes, le déclencheur ne se déclenchera qu'une fois, pas 100 fois. Cela devrait prendre soin de vos deux premiers points (mise à jour, insérer dans).

Un déclencheur ne se déclenchera pas sur bcp. Mais bcp devrait arriver à partir de la ligne de commande, donc je ne sais pas pourquoi vous n'ajouteriez pas votre script shell après chaque commande bcp?

Il existe d'autres informations sur l'appel de xp_cmdshell à partir d'un déclencheur here.

Quelques autres commentaires: Vous n'avez pas vraiment décrit votre environnement ou ce que vous essayez d'accomplir. Si vous êtes dans un environnement OLTP, vous devrez vous assurer que votre script shell fonctionnera correctement si plusieurs mises à jour sont effectuées simultanément sur la table. Si 3 utilisateurs font des mises à jour en même temps, votre script fonctionnera-t-il si trois d'entre eux tournent en même temps? Si vous faites cela dans le cadre d'un système OLAP ou par lots, je ne sais pas pourquoi vous n'ajouteriez pas le script shell au flux de travaux.

+1

Vous n'êtes pas sûr de vouloir l'appeler 100 fois si vous avez une requête sql qui met à jour 100 lignes. – dkretz

+1

Dans les déclencheurs sybase, le feu se déclenche une fois par instruction et non par rangée. –