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

DB2 Discussion :

[debutant][DB2] auto increment field


Sujet :

DB2

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut [debutant][DB2] auto increment field
    Hello,

    je n'arrive pas à créer une table dans DB2 avec une clé primaire qui s'auto incrémente. J'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    create table StoredQuerys (id int not null auto_increment, Query varchar(240), primary key (id))
    quelqu'un à une idée ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 567
    Points
    19 567
    Billets dans le blog
    25
    Par défaut
    Sous DB2, il y a deux méthodes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Create table t (i int GENERATED ALWAYS AS IDENTITY, c char(3)) ;
    Insert into t (c) values (‘A’) ;
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Create sequence t_seq ;
    Create table t (i int, c char(3)) ;
    Insert into t (i, c) values (next value for t_seq, ‘A’);

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 114
    Points
    114
    Par défaut
    merci beaucoup ça à marché

  4. #4
    Nouveau membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Points : 36
    Points
    36
    Par défaut
    Cette info me sera utile par la suite (merci également, donc ), mais il m'en faudrait une autre similaire :

    Comment ajouter une clé primaire qui s'auto-incrémente à une table qui existe déjà ?

    Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE tblName ADD idTable INTEGER GENERATED ALWAYS AS IDENTITY, unAutrechamp varchar;
    ... fonctionnerait-il ?
    Je ne suis pas trop à l'aise avec ces manipulations de tables, et je ne dispose d'un aucun outil graphique (GUI ou autre) permettant de faire ces opérations, j'aimerais donc une confirmation

    Merci d'avance.

  5. #5
    Nouveau membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Points : 36
    Points
    36
    Par défaut
    Après divers échecs, je me suis rendu compte que cette requête fonctionne bel et bien, cependant si la table contient déjà des données, cette requête est risquée puisqu'elle fera une ou plusieurs des choses suivantes (selon les systèmes) :

    - Planter la table, qui retournera un code equivalent à "Ressource indisponible", en attendant que vous alliez voir l'admin DB2 qui lancera une "REORG" de la table. (L'etat du tablespace est aléatoire, pour ma part c'était REORGP, pour "REORG pending"). nb: pending veut dire "en attente".
    - Ramer la table en question jusqu'à ce que les identifiants soient tous calculés, si la REORG est automatique ... (les petits veinards que vous êtes si c'est le cas )

    L'admin de ma boite n'arrivant pas à faire la REORG(anisation de la table) a dû droper la table et la recréer. Soyez donc prudent avec cette requête et consultez votre administrateur auparavant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. cachedRowSet avec un field auto increment
    Par rasx2610 dans le forum JDBC
    Réponses: 0
    Dernier message: 01/12/2009, 14h56
  2. [DB2] Reinitialiser un champ auto increment
    Par Robbie dans le forum DB2
    Réponses: 3
    Dernier message: 05/07/2006, 12h00
  3. [sql server 2000] reinitialiser auto increment field
    Par graphicsxp dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 03/02/2006, 14h57
  4. [debutant]Auto incrementation sur sql-server 2000
    Par syl2095 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 18/11/2004, 18h00
  5. [Débutant] auto incrémentation (intégré FAQ)
    Par LineLe dans le forum Oracle
    Réponses: 7
    Dernier message: 04/06/2004, 16h35

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