Appel d'1 procédure ds clause when du trigger
Résolu/Fermé
fidele
-
29 janv. 2008 à 20:22
adilol Messages postés 14 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 décembre 2009 - 17 avril 2008 à 22:42
adilol Messages postés 14 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 décembre 2009 - 17 avril 2008 à 22:42
A voir également:
- Appel d'1 procédure ds clause when du trigger
- Appel anonyme - Guide
- Renvoi d'appel ooredoo - Forum telephonie fixe
- Emulateur ds iphone - Forum iPhone
- Le point d'entrée de procédure est introuvable dans la bibliothèque de liens dynamiques ✓ - Forum Logiciels
- M3 ds real ✓ - Forum Jeux vidéo
5 réponses
phil_232
Messages postés
286
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
33
29 janv. 2008 à 22:38
29 janv. 2008 à 22:38
à priori je dois dire que pour des raisons de performance il ne faut pas surcharger les triggers. t'as déjà mentionné qu'il est éxécuter assez souvent. n'y aurait il pas une autre solution ? on dit aussi que c'est une mauvaise pratique d'appeler des procedures externes (encore plus lent plus d'autres pbs), dans qq bdd c'est même pas possible. puis tu fais des calculs (à nouveau lent).
je dirais : prends un fauteuille et rélaxes d'abord, puis regardes l'ensemble et demande toi si le trigger est la seule soluce. souvent en peut les éviter.
je dirais : prends un fauteuille et rélaxes d'abord, puis regardes l'ensemble et demande toi si le trigger est la seule soluce. souvent en peut les éviter.
phil_232
Messages postés
286
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
33
30 janv. 2008 à 02:29
30 janv. 2008 à 02:29
"Restreindre le déclenchement du trigger en fonction d'informations non basées sur la table (objet du trigger) mais fortement corrélées à certains champs de ma table"
qu'est ce qui t'empeche de lire dans ta table ?
SI Condition = VRAI ALORS BEGIN FAIT END
"la faisabilité ou l'infaisabilité de la chose"
faut pas crier comme ca
qu'est ce qui t'empeche de lire dans ta table ?
SI Condition = VRAI ALORS BEGIN FAIT END
"la faisabilité ou l'infaisabilité de la chose"
faut pas crier comme ca
????
je n'ai pas réussi justement à écrire cette condition ...
Mais, je t'en prie (je ne demande que ça!!!): montres moi comment écrire une condition basée sur un champ non basé. L'évaluation devra être par exemple de la forme suivante :
f(a)='Y'
avec f: une fonction, une sous-requête
et a: un champ de la table sur lequel porte le trigger ...
je n'ai pas réussi justement à écrire cette condition ...
Mais, je t'en prie (je ne demande que ça!!!): montres moi comment écrire une condition basée sur un champ non basé. L'évaluation devra être par exemple de la forme suivante :
f(a)='Y'
avec f: une fonction, une sous-requête
et a: un champ de la table sur lequel porte le trigger ...
phil_232
Messages postés
286
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
33
30 janv. 2008 à 21:50
30 janv. 2008 à 21:50
IF (SELECT blabla FROM blublu WHERE blibli) = MyValue THEN BEGIN DoSomeStuff END je déjà oublié un peu PL/SQL mais en grosça marche comme ça.
ou bien
DECLARE MyVar
MyVar := SELECT ...
adilol
Messages postés
14
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 décembre 2009
1
17 avril 2008 à 07:09
17 avril 2008 à 07:09
salut tt le monde,
svp,j ai un probleme urgent,je voulais ecrire un trigger qui fait ca:
- si la date de la commande est moins que 3 jour de la date de livraison,il doit afficher un message d erreur.
voici en bas, en detail ce qu il doit faire le trigger
Pour une commande standard (achat d’un bouquet standard), la cyberboutique
garantit la disponibilité en inventaire des items composant le
bouquet seulement si la commande a été passée au moins 3 jours avant la
date de livraison. Pour les commandes standards effectuées moins de 3
jours avant la date de livraison, c’est le client qui assume le risque. Il est
donc très important d’informer ces clients d’une éventuelle pénurie. L’état
de la commande sera alors « VINV »
svp,j ai un probleme urgent,je voulais ecrire un trigger qui fait ca:
- si la date de la commande est moins que 3 jour de la date de livraison,il doit afficher un message d erreur.
voici en bas, en detail ce qu il doit faire le trigger
Pour une commande standard (achat d’un bouquet standard), la cyberboutique
garantit la disponibilité en inventaire des items composant le
bouquet seulement si la commande a été passée au moins 3 jours avant la
date de livraison. Pour les commandes standards effectuées moins de 3
jours avant la date de livraison, c’est le client qui assume le risque. Il est
donc très important d’informer ces clients d’une éventuelle pénurie. L’état
de la commande sera alors « VINV »
phil_232
Messages postés
286
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
33
17 avril 2008 à 21:34
17 avril 2008 à 21:34
d'accord, mais quel est ton pb ???
Hmmmm, tu veux qu'il affiche un message. Ceci est plutôt dangereux : à chaque INSERT / UPDATE / DELETE (selon le type de trigger) tu peux le recevoir. Ça peut être dérangeant si tu fais ça à partir d'un autre endroit, un autre programme, un "bulk insert"...
Comme j'ai déjà mentionnè au-dessus, il vaut mieux éviter les trigger et travailler avec des contraintes, par example. Genre de (si les deux dates se trouvent dans la même table)
Date_de_livraisons <= Date_de_commande
Sois-en sure : cela te sort un message d'erreur, mais le gérer (ce salaud) c'est ton boulot.
Hmmmm, tu veux qu'il affiche un message. Ceci est plutôt dangereux : à chaque INSERT / UPDATE / DELETE (selon le type de trigger) tu peux le recevoir. Ça peut être dérangeant si tu fais ça à partir d'un autre endroit, un autre programme, un "bulk insert"...
Comme j'ai déjà mentionnè au-dessus, il vaut mieux éviter les trigger et travailler avec des contraintes, par example. Genre de (si les deux dates se trouvent dans la même table)
Date_de_livraisons <= Date_de_commande
Sois-en sure : cela te sort un message d'erreur, mais le gérer (ce salaud) c'est ton boulot.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
adilol
Messages postés
14
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 décembre 2009
1
17 avril 2008 à 22:42
17 avril 2008 à 22:42
alors comment je ferai et si tu peux m aider la dessus comme m ecrire la requete ou la contrainte.
ou bien le trigger.
moi je veux que si la date de livraison est de moins de 3jrs de la date de commande,il me donne erreur ou bien il insert un etat de VINV
ou bien le trigger.
moi je veux que si la date de livraison est de moins de 3jrs de la date de commande,il me donne erreur ou bien il insert un etat de VINV
29 janv. 2008 à 23:41
Une autre solution, alternative, pourrait difficilement être mise en place dans la mesure où ce trigger est un objet existant qu'on veut améliorer et sur lequel repose d'autres fonctionnalités.
Mais pourquoi pas ?
Attention, cette solution, si elle existe, devrait conserver tous les avantages et le comportement du trigger ... à savoir suite à l'insertion d'une nouvelle transaction de type Réception, déclencher systématiquement et immédiatement un enrichissement de certaines informations de cette même transaction.
Quoiqu'il en soit, je ne renonce toujours pas à trouver une solution à mon problème.
D'autant plus que je n'ai toujours pas de réponse à ma question:
Peux-t-on dans la clause when d'un trigger faire appel à une sous-requête sql ou à une procédure stockée ?
Je rappelle l'origine de mon souci:
Restreindre le déclenchement du trigger en fonction d'informations non basées sur la table (objet du trigger) mais fortement corrélées à certains champs de ma table ... d'où mon recours à une fonction stockée.
Merci de m'aider à valider la faisabilité ou l'infaisabilité de la chose ... et à défaut de me proposer une solution alternative.