IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

Archiver avant d'effacer


Sujet :

Requêtes PostgreSQL

  1. #21
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    ça revient à ce que je disais...

    celui qui a fait cet exercice n'a pas dû penser à tout ça comme souvent dans ces trucs (oui je sais c'est débile de faire mal réfléchir les gens... mais c'est ce qu'on appelle souvent l'éducation )

    ça revient à faire seulement un insert dans la table archive par rapport à un select sur les parties de old nécessaires et tu as besoin de la table stage effectué et la table stage en jointure sur celle-ci. Y a que ça dans le trigger after delete sur la table étudiant

    Les variantes ne correspondent qu'à plus ou moins de données rapatriées...

    A toi de voir en fonction de l'énoncé complet que tu as pour les tables et leur structure... allez cogite un peu c'est pas dur...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  2. #22
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    ralala j'ai de la fumée qui sort du cerveau la mdr

    Question : dans la table stagesarchive que je dois créer, dois-je y insérer les mêmes clefs étrangères? Dois-je absolument avoir une clef primaire ?

  3. #23
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    ça marcheeeeeeeeeeeeeeeeeeeeeeeeeeee ( desolée j'au du mal à me contenir lol )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    create or replace function archivage() returns trigger as
    $$
     
     
    begin
     
    insert into stagesarchive SELECT old.* FROM stages natural join etudiants;
     
    return old;
    end;
     
    $$
    language plpgsql;
    create trigger archivage before delete on stages
    for each row execute procedure archivage();
    le drop du trigger sur la tables etudiants n'avait pas été pris en compte
    merciiiiiiiiiiiiiiiiiiiii beaucoup pour votre aide

  4. #24
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    arf je viens de me rendre compte que mon joli trigger archivait des doublons ....

    je ne vois pas comment éviter cela

    quelqu’un a t'il une idée?

  5. #25
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    montre un petit exemple...

    ça vient de la jointure mais c'est normal... pour une archive c'est pas forcément un problème

    en plus, pour une bonne pratique, une table doit TOUJOURS avoir une clé primaire (si possible numérique et de taille adaptée)...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  6. #26
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    si je rajoute un champs idstage comment faire pour qu'il integre mon select ?

  7. #27
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    une autre bonne habitude pour les insert toujours préciser la structure comme ça toi ou celui qui relit parfois longtemps après voit les colonne de la table où tu insères...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  8. #28
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    D'après...
    Citation Envoyé par okayassu Voir le message
    l'idee vient de l'enoncé

    2. Ecrire une procédure qui supprime un étudiant (dont le nom est passé en paramètre) ainsi que les stages auxquels il a participé.

    3. Ecrire un trigger qui archive tous les stages d’un étudiant, avant de le (l’étudiant) supprimer. La table dans laquelle, on archive ayant la même structure que la table stages.

    4. Ecrire une variante améliorée, l’archivage se faisant dans une table dont la structure est la suivante : nometudiant , prenometudiant , numstage, titrestage, objetstage, anneescolaire, numetudiant, regimeetudiant, numcontact, numprofsuiveur, remarques

    la fonction pour la question 2 fonctionne et j' ai le choix entre la question 3 ou 4 que je n'arrive pas a résoudre
    Le trigger ne doit être créé que pour "avant la suppression d'étudiant" "BEFOR DELETE". On ne s'occupe pas de suppression directe dans "stage"!
    On respecte l'esprit de l'exercice et on oubli une situation de BD en production.
    Pour la question 3 aucune donnée propre à l'étudiant dans la table "etudiant" ne doit être archivée! on archive uniquement ses stages.(je rappelle qu'on suit l'esprit de l'exercice)
    Pour la question 4 (je pense que le prof amène l'étudiant à comprendre graduellement la situation)...
    1. Le trigger reste uniquement sur la table "etudiant" et en BEFOR
    2. on fait une INSERTE INTO stagearchive SELECT old.numetudiant, old.prenom, old.nom, stage.x, stage.y... FROM stage WHERE stage.numetudiant=old.numetudiant

    okayasu je te conseil une bonne lecture sur plpgsql pour optimiser un peut ton code; beaucoup de lignes peuvent être contractées!!!
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

Discussions similaires

  1. [XL-2003] Copier avant d'effacer
    Par sylvestre09 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/04/2012, 16h14
  2. Effacer une ligne pour archiver
    Par laurent.c123 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/10/2007, 12h01
  3. script pour demander une confirmation avant d effacer
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/10/2006, 10h46
  4. Effacer un Canvas avant de redessiner dessus
    Par Kwentin dans le forum Java ME
    Réponses: 3
    Dernier message: 09/10/2006, 08h21
  5. [VBA-E]Copier avant d'effacer
    Par tarmin dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/01/2006, 13h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo