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 18/09/2007, 11h50   #1
Membre Expert
 
Inscription : septembre 2002
Messages : 1 639
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : septembre 2002
Messages : 1 639
Points : 1 001
Points : 1 001
Par défaut Modifier une autre table dans un trigger

Une table A a un trigger dans lequel la table B est modifiée :

Code :
1
2
 
Affecter la valeur CURRENT_DATE pour B.DATE_B WHERE B.NUM_B = A.NUM_A;
Cela est-il possible et comment faire cela ?

Merci.
__________________
La connaissance ne sert que si elle est partagée.
http://ms2i.net
Mister Nono est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 12h00   #2
Modérateur
 
Avatar de Cl@udius
 
Homme Claude Renouleaud
Développeur informatique
Inscription : février 2006
Messages : 4 760
Détails du profil
Informations personnelles :
Nom : Homme Claude Renouleaud
Âge : 49
Localisation : France, Hautes Pyrénées (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 4 760
Points : 6 790
Points : 6 790
Salut

Dans le trigger de la Table A ajoute simplement ceci:

Code :
1
2
3
4
 
  UPDATE TABLE_B
  SET DATE_B = CURRENT_DATE
  WHERE NUM_B = NEW.NUM_A;
@+ Claudius
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira.
Cl@udius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 12h06   #3
Membre Expert
 
Inscription : septembre 2002
Messages : 1 639
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : septembre 2002
Messages : 1 639
Points : 1 001
Points : 1 001
Merci Cl@udius.

J'avais fais cela :

Code :
1
2
 
UPDATE B SET B.date_B = current_date WHERE B.id_B = A.id_A;
... et cela ne fonctionnait pas.

Mais pourquoi faut-il remplacer A.id_A par new.id_A ?

A+
__________________
La connaissance ne sert que si elle est partagée.
http://ms2i.net
Mister Nono est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 12h08   #4
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
Si c'est après une insertion utilise le trigger after et prend la nouvelle valeur de A avec NEW (tu peux utiliser OLD si tu veux une ancienne valeur et dans les cas UPDATE ou DELETE)

Voici un exemple :

Code :
1
2
3
4
5
6
7
 
CREATE TRIGGER A_BI0 FOR A
ACTIVE AFTER INSERT POSITION 0
AS
BEGIN
  UPDATE B SET DATE_B = CURRENT_DATE WHERE NUM_B = NEW.NUM_A;
END
sillycoder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 12h12   #5
Membre Expert
 
Inscription : septembre 2002
Messages : 1 639
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : septembre 2002
Messages : 1 639
Points : 1 001
Points : 1 001
Merci.
__________________
La connaissance ne sert que si elle est partagée.
http://ms2i.net
Mister Nono est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h43.


 
 
 
 
Partenaires

Hébergement Web