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 16/04/2011, 17h04   #1
Inscrit
 
Inscription : mai 2004
Messages : 758
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 758
Points : 287
Points : 287
Par défaut Sauvegarde interne de données

Bonjour a tous

Je bosse avec la version 2.5 de Firebird, j'ai dans ma base de données une table (A) assez sensible que je voudrais surveillez constamment.
j'ai donc créer une table a l'identique (B) qui a une ou 2 champs en plus.
Maintenant a chaque modification ou suppression de données de la table (A), jz veux récupérer dans la table (B) toute la ligne de a table (A) avant modif ou suppression.
je sais que je peux le faire a partir un trigger, mais je ne vois pas comment m'y prendre !

Merci de m'éclairer
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2011, 21h18   #2
Membre éclairé
 
Avatar de TryExceptEnd
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 435
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2006
Messages : 435
Points : 347
Points : 347
Quelque chose comme ceci :

Code :
1
2
3
4
5
6
7
CREATE OR ALTER TRIGGER TABLE_A_aud FOR TABLE_A
active after UPDATE OR DELETE position 0
AS
begin
 INSERT INTO TABLE_B
 SELECT * FROM TABLE_A WHERE TABLE_A_ID = old.TABLE_A_ID;
end
__________________
Si vous êtes libre, choisissez le Logiciel Libre.
TryExceptEnd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2011, 22h42   #3
Inscrit
 
Inscription : mai 2004
Messages : 758
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 758
Points : 287
Points : 287
je vais tester et faire un retour
Merci !
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2011, 23h22   #4
Inscrit
 
Inscription : mai 2004
Messages : 758
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 758
Points : 287
Points : 287
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
SET TERM ^ ;
 
CREATE TRIGGER MESINFORMATIONS_BI1 FOR MESINFORMATIONS
ACTIVE BEFORE UPDATE OR DELETE
POSITION 0
AS
BEGIN
INSERT INTO MESINFORMATIONS_SAUVEGARDE
SELECT * FROM MESINFORMATIONS
WHERE MESINFORMATIONS.LACLE = old.LACLE;
END^
 
SET TERM ; ^
voici finalement ce qui est passé !

Merçi a toi
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2011, 23h41   #5
Inscrit
 
Inscription : mai 2004
Messages : 758
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 758
Points : 287
Points : 287
Dans la foulé des tests il me semble qu'en modification de la table MESINFORMATIONS pour une deuxième fois, j'ai un message d’erreur qui dit qu'il tentative d'ajout de doublon au niveau de la table de sauvegarde ! je cherche donc a améliorer la solution.
devalender 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 04h43.


 
 
 
 
Partenaires

Hébergement Web