2008-12-09 8 views
1

Est-il possible de modifier le décalage auto-incrément sur une table préexistante avec JavaDB?JavaDB: Est-il possible de modifier le décalage automatique de la table existante?

Je vais avoir un problème où l'insertion de nouveaux enregistrements généralement (mais pas toujours) échoue avec une erreur se plaignant sur l'utilisation d'une clé existante (ma colonne auto-incrément). Pour peupler cette base de données, j'ai pris une sauvegarde à partir d'une autre base de données (MySQL) et utilisé une procédure stockée JavaDB pour les insérer tous dans la table JavaDB correspondante. Ma théorie est que l'insertion de ces enregistrements a copié les ID existants de la table MySQL. Maintenant, la fonctionnalité d'auto-incrémentation distribue les ID existants. Je pense que définir explicitement le décalage à un nombre élevé permettra à l'auto-incrément de fonctionner à nouveau.

Répondre

0

Je ne sais pas comment changer directement le décalage, mais je réussi à résoudre ce problème par:

  1. Changer la quantité d'incrément par X (1 million dans mon cas).
  2. Insertion d'un enregistrement factice.
  3. Réduction de la valeur de l'incrément à 1.
  4. Suppression de l'enregistrement factice.

J'ai utilisé cette instruction SQL pour modifier la quantité d'incrément:

ALTER TABLE tbl ALTER COLUMN col SET INCREMENT BY x 
1

Même si ce n'est pas une réponse directe à la question: Avec MySQL, vous pouvez faire une

ALTER TABLE my_little_table AUTO_INCREMENT =2000 

pour définir la valeur d'incrément automatique.

Questions connexes