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

PL/SQL Oracle Discussion :

Insert - Update Script


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut Insert - Update Script
    Salut à tous

    J'aimerais savoir si il serait mieux de faire un update sur des données plutôt que de les delete avant comme je le fais. Si oui, comment faire le script avec un insert et si les données existent, faire un update

    Voici mon script pour le moment

    Merci

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    DECLARE
       invalid_column_name          EXCEPTION;
       column_already_exist         EXCEPTION;
       table_does_not_exist         EXCEPTION;
       name_is_already_used         EXCEPTION;
       pub_synonym_not_exist        EXCEPTION;
       table_can_have_only_one_pk   EXCEPTION;
       unique_constraint            EXCEPTION;
       trigger_does_not_exist       EXCEPTION;
       constraint_exist             EXCEPTION;
       PRAGMA EXCEPTION_INIT (invalid_column_name, -904);
       PRAGMA EXCEPTION_INIT (column_already_exist, -1430);
       PRAGMA EXCEPTION_INIT (table_does_not_exist, -942);
       PRAGMA EXCEPTION_INIT (name_is_already_used, -955);
       PRAGMA EXCEPTION_INIT (pub_synonym_not_exist, -1432);
       PRAGMA EXCEPTION_INIT (table_can_have_only_one_pk, -2260);
       PRAGMA EXCEPTION_INIT (unique_constraint, -1);
       PRAGMA EXCEPTION_INIT (trigger_does_not_exist, -4080);
       PRAGMA EXCEPTION_INIT (constraint_exist, -2264);
    BEGIN
    	--DML010
    	BEGIN
    		DELETE address_type_definition WHERE address_type_id=1;
    		DELETE address_type_definition WHERE address_type_id=2;
    		INSERT INTO address_type_definition (address_type_id, description) VALUES (1, 'Physical');
    		INSERT INTO address_type_definition (address_type_id, description) VALUES (2, 'Mailing');
     
    		COMMIT;
    	EXCEPTION
    		WHEN unique_constraint THEN NULL;
    		WHEN OTHERS THEN
    			RAISE_APPLICATION_ERROR(-20101, 'DML010 ERROR SQLCODE = '||SQLCODE||' '||SQLERRM);
    	END;
     
    END;
    /
    SHOW ERRORS;

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 134
    Par défaut
    Première solution :
    un update et un insert
    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
    16
    17
    18
    update  address_type_definition
    set     description = 'Physical'
    where   address_type_id = 1
        and description <> 'Physical'
    ;
    INSERT INTO address_type_definition
        (   address_type_id
        ,   description
        ) 
    SELECT  1 as address_type_id
        ,   'Physical' as description
    FROM    DUAL  SRC  
    WHERE   NOT EXISTS 
            (   select    1
                from      address_type_definition
                where     src.address_type_id = tgt.address_type_id
            )
    ;
    Deuxième solution :
    Utiliser la commande MERGE, mais je n'ai pas sa syntaxe sous la main
    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.

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut
    Merge je le connais

    Merci ;-)

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Selon la volumétrie ça peut être plus intéressant tout de même de faire un DELETE et INSERT

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 134
    Par défaut
    ... à condition toutefois qu'il n'y ait pas de contraintes derrière
    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. INSERT/UPDATE via DBLink
    Par Wilk dans le forum Oracle
    Réponses: 1
    Dernier message: 15/03/2006, 14h51
  2. [C#][2.0] Traitement de Formulaire (Insert / Update)
    Par softflower dans le forum ASP.NET
    Réponses: 7
    Dernier message: 17/02/2006, 13h44
  3. Réponses: 4
    Dernier message: 05/04/2005, 18h28
  4. Redirect de la page après un insert/update/delete
    Par mchicoix dans le forum XMLRAD
    Réponses: 5
    Dernier message: 25/02/2005, 09h31
  5. [Info] Insert/Update si problèmes divers
    Par portu dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/07/2004, 10h17

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