PDA

View Full Version : [SQL] Resettare le chiavi delle tabelle



Caswallon
3rd May 2007, 12:17
Il problema è plain&easy
Abbiamo una tabella con chiave primaria auto-incrementale, cancelliamo un tot di record. Ora supponiamo di voler inserire dei nuovi record, come faccio a far capire al dbms che deve utilizzare le chiavi dei campi che ho cancellato prima di crearne delle nuove?

Grazie geniacci
:rain:

Rise-the-Sky
3rd May 2007, 12:28
Il problema è plain&easy
Abbiamo una tabella con chiave primaria auto-incrementale, cancelliamo un tot di record. Ora supponiamo di voler inserire dei nuovi record, come faccio a far capire al dbms che deve utilizzare le chiavi dei campi che ho cancellato prima di crearne delle nuove?
Grazie geniacci
:rain:

Devi memorizzarti la chiave + bassa che hai cancellato e poi impostare con Setval('nome_sequence','valore_futura_nextval') la sequence in modo che il valore che ti restituirà come nextval sia quello.

Questo funziona certamente x PostgreSQL. Su un altro DBms(tu non hai parlato di che cosa usi :p ) va provato ma sicuramente se non identica la soluzione è simile.

Caswallon
3rd May 2007, 12:37
Usano mySQLfront... cmq ora lo faccio provare... alla fine non sono io che mi occupo dei database :rotfl:

Rise-the-Sky
3rd May 2007, 13:00
Usano mySQLfront... cmq ora lo faccio provare... alla fine non sono io che mi occupo dei database :rotfl:

Se lavorate con mysql il comando corretto probabilmente allora sarà:

mysql> ALTER TABLE nometabella AUTO_INCREMENT = X;

Dove X ovviamente è la minore delle chiavi cancellate.

Caswallon
5th May 2007, 10:06
Bella :D

Thank you :bow: :D

Jarsil
5th May 2007, 11:50
Si ma ocio che se cancelli della roba "in mezzo" non è che puoi infilare il conteggio all'indietro e poi sperare che salti quando arrivi agli ID che già hai dentro...

Tralasciando il fatto che è comunque concettualmente sbagliato il voler riscrivere un autoincrementale, ma ognuno è libero di farsi il software come piu' gli aggrada :)