Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/05/2007, 09h39   #1
Invité régulier
 
Inscription : avril 2005
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 19
Points : 6
Points : 6
Envoyer un message via Yahoo à DAGADA
Par défaut Call stored procedure from trigger

Bonjour,

Suite a une insertion dans ma base de donnée dans une table, j'ai un champ qui est autoincrémenté ( un trigger qui fait ça automatiquement), suite a cette insertion je veux utilisé cette valeur pour l'insérer dans une autre table.


Est ce que je peux appelé une procédure stocké depuis le triggers ou bien sauvegardez cette valeur dans une variable globale .
Best regards !
DAGADA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 11h20   #2
Membre régulier
 
Inscription : février 2005
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 100
Points : 88
Points : 88
Normalement je pense que oui, mais après on n'est jamais certain de la validité de la valeur car un trigger est comme son nom l'indique un déclencheur et donc il répondra à toutes les insertions. Supposons que l'on ait l'exécution suivante avec deux utilisateurs se connectant de manière presque simulantée à la base données
Utilisateurs A et B


A lance le trigger qui insère la valeur par exemple 2
B lance le trigger qui insère une autre valeur par exemple 3
A lit la valeur de la variable avec la procédure stockée : 3
B lit la valeur de la variable avec la procédure stockée : 3


Le fait de sauvegarder la valeur dans une variable globale semble plus sûre.


A lance le trigger qui insère la valeur par exemple 2 et sauvegarde 2
B lance le trigger qui insère une autre valeur par exemple 3 et sauvegarde 3
A lit la valeur de la variable : 2
B lit la valeur de la variable : 3
sillycoder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 12h55   #3
Invité régulier
 
Inscription : avril 2005
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 19
Points : 6
Points : 6
Envoyer un message via Yahoo à DAGADA
Merci.

Mais comment declaré une variable dans la quelle je peux sauvgarder une valeur puis la retrouvé par la suite pour l'inserer dasn uen autre table comme foreign key ?

Merci
DAGADA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 13h33   #4
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
Citation:
Envoyé par DAGADA
Est ce que je peux appelé une procédure stocké depuis le triggers
bien sûr que tu peux !

Code :
1
2
3
4
5
6
7
8
9
SET TERM ^^ ;
CREATE TRIGGER TEST_NUM_1 FOR TEST_NUM ACTIVE BEFORE INSERT POSITION 0 AS
begin
  IF (NEW.C_INT IS NULL) THEN
  NEW.C_INT = gen_id(GEN_TEST_ID,1);
  EXECUTE PROCEDURE PS_INS_TEST(NEW.C_INT);
end
^^
SET TERM ; ^^
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h37.


 
 
 
 
Partenaires

Hébergement Web