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 :

Récupérer dernier enregistrement inséré


Sujet :

Langage SQL

  1. #21
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 340
    Points : 39 738
    Points
    39 738
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    NON, NON et NON !!!!

    A +
    Ce n'est pas bien de tronquer la citation, car j'ai moi même expliqué juste après pourquoi ce n'était pas applicable

    A noter que sur certaines databases, l'auto incrément n'est pas toujours forçable : le parametre "generated allways" ne permet pas le forçage alors que le "generated by default le permet"
    (Paramètre dispo sur DB2, à vérifier sur oracle)

  2. #22
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 899
    Points : 53 140
    Points
    53 140
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Ce n'est pas bien de tronquer la citation, car j'ai moi même expliqué juste après pourquoi ce n'était pas applicable

    A noter que sur certaines databases, l'auto incrément n'est pas toujours forçable : le parametre "generated allways" ne permet pas le forçage alors que le "generated by default le permet"
    (Paramètre dispo sur DB2, à vérifier sur oracle)
    Même avec un generated always il est possible d'altérer la séquence ou la table et ensuite de forcer des auto incréments....

    A +

  3. #23
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 340
    Points : 39 738
    Points
    39 738
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    il ne faut pas oublier les identity colonnes, qui elles sont bien incrémentées (ou décrémentées au choix) automatiquement, auquel cas on peut retrouver la dernière insertion, même après un delete.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GENERATED ALWAYS AS IDENTITY
    Sauf que : il peut y avoir eu d'autres personnes qui ont fait d'autres actions sur la base dans l'intervalle
    D'où ma remarque précédente ci-dessus : le souci c'est qu'une base de donnée n'est pas une propriété privée, plusieurs personnes y font des mises à jour

  4. #24
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Enfin parler de transaction en autocommit... Effectivement on a pas fini le troll !
    ++++ troll pour troll... C'est sur qu'une transaction en autocommit ça sert!!! (enfin peut on parler de transaction?) . Quand a pas comprendre l'auto incrément, la séquence c'est bien aussi...

    Sur la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT id FROM MATABLE
                WHERE ROWID=(SELECT MAX(ROWID) FROM MATABLE);
    pour moi le principal pb c'est que ROWID sur Oracle c'est une pseudo colonne qui est, certes unique, mais qui est fonction de l'adresse physique de la ligne, et donc rien ne peut assurer que la dernière ligne créée n'a pas un rowid inférieur à tous les autres...

    A la limite, sous Oracle, si la ligne est créée avec une séquence, utilise "currval". Bon, c'est sur si l'id est insérée sans passer par la séquence c'est foutu!! Dans ce cas il te reste la possibilité (tordue) de créer un trigger sur insert qui va stoquer dans une autre table la valeur du dernier id inséré..

  5. #25
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Le problème de CURRVAL c'est qu'il n'est utilisable qu'après un NEXTVAL, dans la même session.
    Ça ne répond pas au besoin initial.

    SQLPro n'a pas tort quant aux auto-incréments chez Oracle, il suffit de voir le nombre de sujets que ça entraîne sur la toile.
    C'est plus simple d'écrire IDENTITY que de créer une séquence et un déclencheur, sans parler de l'impact sur les performances lorsqu'on traite du gros volume.

    Ce n'est pas pour rien qu'Oracle a rajouté cette syntaxe a dans la version 12c :
    http://oracle-base.com/articles/12c/...acle-12cr1.php

  6. #26
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 108
    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 108
    Points : 28 420
    Points
    28 420
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Ce n'est pas pour rien qu'Oracle a rajouté cette syntaxe a dans la version 12c :
    http://oracle-base.com/articles/12c/...acle-12cr1.php
    Et ça leur permet de se rapprocher de la norme

  7. #27
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 899
    Points : 53 140
    Points
    53 140
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Et ça leur permet de se rapprocher de la norme
    Oh, les deux ont été validées : sequence et identity, pour pas faire de jaloux !

    A +

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Récupérer le dernier enregistrement inséré
    Par jockerse dans le forum SQLite
    Réponses: 5
    Dernier message: 03/04/2014, 19h52
  2. Récupérer le dernier enregistrement inséré dans une table
    Par pierre24 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/10/2008, 11h45
  3. Réponses: 5
    Dernier message: 29/12/2005, 07h03
  4. Réponses: 5
    Dernier message: 01/02/2005, 17h29
  5. Récupérer dernier enregistrement d'une table?
    Par Invité dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 19/01/2004, 11h38

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