Mysql
 sql >> Database >  >> RDS >> Mysql

Colonna INT di tipo SERIAL

Con il DBMS Informix, la colonna SERIAL non cambierà dopo l'inserimento; infatti, non è possibile aggiornare affatto un valore SERIAL. Puoi inserirne uno nuovo con 0 come valore, nel qual caso viene generato un nuovo valore, oppure puoi inserire un altro valore. Se l'altro valore esiste già ed è presente un vincolo univoco, ciò fallirà; se non esiste o se non esiste un vincolo univoco sulla colonna seriale, avrà esito positivo. Se il valore inserito è maggiore del valore più grande precedentemente inserito, il numero successivo da inserire sarà nuovamente maggiore di uno. Se il numero inserito è più piccolo o negativo, non vi è alcun effetto sul numero successivo.

Quindi, potresti eseguire il tuo aggiornamento senza modificare il valore, nessun problema. Se è necessario modificare il numero, sarà necessario eliminare e inserire (o inserire ed eliminare), dove l'inserto contiene uno zero. Se preferisci la coerenza e utilizzi le transazioni, puoi sempre eliminare e quindi (re)inserire la riga con lo stesso numero o con uno zero per attivare un nuovo numero. Questo presuppone che tu abbia un linguaggio di programmazione che esegue SQL; Non credo che tu possa modificare ISQL e Perform per farlo automaticamente.

Quindi, a questo punto, non vedo il problema su Informix.

Con la versione appropriata di IDS (tutto ciò che è supportato), puoi usare SEQUENCE per controllare anche i valori inseriti. Questo si basa sulla sintassi e sul concetto Oracle; DB2 supporta anche questo. Altri DBMS hanno altri meccanismi equivalenti (ma diversi) per la gestione dei numeri generati automaticamente.