2012-03-06 14 views

risposta

16

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.

1

Non è possibile ridurre la lunghezza di una colonna. Per ottenere questo effetto, devi

  • creare una nuova tabella con i tuoi dati e con l'attributo che desideri.
  • Elimina vecchio tavolo
  • rinominare la nuova tabella

Se si vuole aumentare la lunghezza, è possibile con ALTER comando

ALTER TABLE temp 
     ALTER COLUMN col1 
     SET DATA TYPE VARCHAR(60) 
+2

... 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. –

2

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.

Problemi correlati