C'è un modo per ridurre la lunghezza della colonna in DB2?Modo per ridurre la lunghezza della colonna in DB2
Dire che ho una tabella temp con colonna col1
definita come VARCHAR(80)
. Voglio ridurlo a VARCHAR(60)
.
C'è un modo per ridurre la lunghezza della colonna in DB2?Modo per ridurre la lunghezza della colonna in DB2
Dire che ho una tabella temp con colonna col1
definita come VARCHAR(80)
. Voglio ridurlo a VARCHAR(60)
.
In DB2 9.7 per Linux/UNIX/Windows, puoi usare l'istruzione ALTER TABLE per ridurre la lunghezza di una colonna, partendo dal presupposto che nessun valore nella colonna superi la nuova dimensione della colonna:
ALTER TABLE temp
ALTER COLUMN col1 SET DATA TYPE VARCHAR(60);
Se alcuni valori nella colonna superano la dimensione desiderata, è necessario gestirla per prima.
Nelle versioni precedenti di DB2 per Linux/UNIX/Windows, non è possibile utilizzare questo metodo per ridurre la dimensione della colonna. O si doveva abbandonare/ricreare la tabella, oppure passare attraverso un processo di aggiunta di una colonna, copia dei dati e rimozione della vecchia colonna.
Non è possibile ridurre la lunghezza di una colonna. Per ottenere questo effetto, devi
Se si vuole aumentare la lunghezza, è possibile con ALTER
comando
ALTER TABLE temp
ALTER COLUMN col1
SET DATA TYPE VARCHAR(60)
Come aggiunta alla risposta di Ian e Clockwork-Muse's remark:
Mentre è possibile, come Ian sottolineato poter utilizzare ALTER
istruzioni per ridurre la lunghezza colonna DB per LUW, questo non è il caso in DB2 per z/OS dalla versione 10.
Secondo this table vengono riconosciute solo tipo di modifiche dei dati da VARCHAR(n)
a VARCHAR(n+x)
, che è una rottura.
... Tranne che è possibile utilizzare il comando "ALTER TABLE" per _shorten_ anche la colonna. Perché ti aspetteresti che un comando che potrebbe aumentare la lunghezza non sarebbe utilizzabile anche per ridurlo? La tua sintassi è corretta e dovrebbe essere la dichiarazione di cui ha bisogno. Sebbene, ovviamente, i dati possano essere troncati. –