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

Langage SQL Discussion :

insertion sous condition


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Par défaut insertion sous condition
    Hi,

    j'ai pas mal chercher mais je n'ai pas trouvé la réponse sur le net.

    est t-il possible de crée un requête qui permet l'insertion uniquement si l'enregistrement n'existe pas.

    du style :IF NOT EXIST insert into tbdate (date) values ('26-08-2007');

    (bien sur le if not exist ne marche pas c'est juste à titre d'exemple)

    j'ai un programme qui qui parcours un fichier texte replis de date et je dois les insérer dans ma base de données. sauf que si la date existe déjà je ne veux pas la ré-insérer.

    j'utilise postgresql 8.2

  2. #2
    Membre chevronné Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Par défaut
    T'as essayé de mettre la condition not exists dans un where style :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    insert into tbdate (date) values ('26-08-2007')
    where not exists (select t.date
                      from tbdate t;;

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    L'ordre INSERT n'est pas prévu pour être utilisé avec une clause WHERE, c'est donc impossible.

    Vous pouvez faire une procédure stockée qui fait le contrôle avant de faire l'insertion.

    Vous pouvez aussi mettre en place une contraire d'unicité sur la date qui interdira l'insertion de dates égales dans la table.

  4. #4
    Membre habitué
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Par défaut
    AL1986 : oui j'ai déjà essayé et ca marche pas....

    vmolines : merci pour ces explications...

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    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 136
    Par défaut
    Citation Envoyé par vmolines Voir le message
    L'ordre INSERT n'est pas prévu pour être utilisé avec une clause WHERE, c'est donc impossible.
    Pas tout à fait vrai : INSERT ... VALUES n'autorise pas la clause WHERE.
    Mais INSERT ... SELECT ... l'autorise sans problème !

    On peut très bien faire alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO tbdate (date)
    SELECT '26-08-2007'
    FROM table_bidon_d_une_seule_ligne
    WHERE NOT EXISTS (SELECT 1
                      FROM tbdate AS t
                      WHERE t.date =  '26-08-2007')
    Au passage, je suppose que le nom de colonne date n'est là que pour l'exemple
    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.

  6. #6
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mai 2006
    Messages : 152
    Par défaut
    Il faut faire une procédure stockée pour écrire cela proprement.

Discussions similaires

  1. [XL-2010] Macro insertion de ligne et somme sous condition
    Par bibZz dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/03/2015, 19h26
  2. [XL-2013] Insertion saut de page sous condition
    Par SoMsp dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2015, 14h37
  3. Insertion de colonne sous condition
    Par eric4459 dans le forum Excel
    Réponses: 0
    Dernier message: 29/07/2014, 17h38
  4. Réponses: 6
    Dernier message: 23/02/2010, 16h52
  5. Insertion sous condition
    Par youdev dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 31/10/2006, 15h12

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