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

SQL Oracle Discussion :

Première requête plante, la seconde ne doit pas tourner CONDITION


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Première requête plante, la seconde ne doit pas tourner CONDITION
    Bonjour ,
    je veux sauvegarder certaines lignes d'une table vers une table de sauvegarde.
    Et ensuite, si l'insert s'est bien passé, supprimer les lignes de la première table.
    Comment vérifier si l'insert se passe bien ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    insert into table_sauvegarde
    select * from table_origine
    where  date_vente < sysdate-365
     
    ;
     
    delete from table_origine
    where  date_vente < sysdate-365
     
    ;

  2. #2
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Si c'est un script sqlplus, WHENEVER SQLERROR EXIT 42 va terminer à la première erreur, avec un code retour 42.
    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 788
    Points
    30 788
    Par défaut
    Si tu as un identifiant sur tes tables, tu peux aussi jouer la sécurité en ne supprimant que les lignes qui sont présentes dans la sauvegarde.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    delete 
    from    table_origine ori
    where   date_vente < sysdate - 365
        and exists
            (   select  null
                from    table_sauvegarde    svg
                where   svg.id  = ori.id 
                    and date_vente < sysdate - 365
            )
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par pachot Voir le message
    Bonjour,
    Si c'est un script sqlplus, WHENEVER SQLERROR EXIT 42 va terminer à la première erreur, avec un code retour 42.
    Cordialement,
    Franck.
    Merci pour votre réponse.

    j'ai utilisé: Whenever SQLERROR EXIT FAILURE ROLLBACK;
    ça fonctionne!!!
    Merci.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Si tu as un identifiant sur tes tables, tu peux aussi jouer la sécurité en ne supprimant que les lignes qui sont présentes dans la sauvegarde.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    delete 
    from    table_origine ori
    where   date_vente < sysdate - 365
        and exists
            (   select  null
                from    table_sauvegarde    svg
                where   svg.id  = ori.id 
                    and date_vente < sysdate - 365
            )
    ;
    Bonsoir, merci pour votre réponse. on pourrait même simplifier ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    delete 
    from    table_origine ori
    where   exists
            (   select  null
                from    table_sauvegarde    svg
                where   svg.id  = ori.id 
     
            )
    ;

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 788
    Points
    30 788
    Par défaut
    Tout à fait. J'ai fait un copier coller sans me pencher plus avant sur le fonctionnel
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

Discussions similaires

  1. [PostgreSQL] Requête imbriquée (utiliser valeur d'une première requête dans la seconde)
    Par OliverF dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/11/2016, 00h20
  2. [WD19] Requête SQL qui ne doit pas tenir compte des accents
    Par Tchupacabra dans le forum WinDev
    Réponses: 10
    Dernier message: 19/06/2014, 10h30
  3. Réponses: 4
    Dernier message: 25/02/2009, 14h22
  4. lien pour une table qui ne doit pas etre public
    Par raslain dans le forum Oracle
    Réponses: 1
    Dernier message: 12/12/2005, 13h40
  5. Réponses: 13
    Dernier message: 06/11/2005, 10h45

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