2009-04-16 22 views
36

Come si elimina una colonna da una tabella esistente?Eliminazione di colonne in MS SQL Server

+0

possibile duplicato di [Come rimuovere una colonna da una tabella esistente?] (Http: // StackOverflow.it/questions/5626344/how-to-remove-a-column-from-an-existing-table) –

+1

In realtà, l'altra domanda è stata scritta 2 anni dopo questa in modo che fosse il duplicato. –

risposta

82

Il comando che state cercando è:

alter table tblName drop column columnName 

dove tblName è il nome della tabella e columnName è il nome della colonna, ma ci sono alcune cose potrebbe essere necessario fare prima

  • Se sono presenti riferimenti a chiavi esterne alla colonna, è necessario eliminarli prima.
  • Se c'è un indice che utilizza quella colonna, è necessario eliminarlo o regolarlo per non utilizzare quella colonna.

Tenete a mente che le prestazioni di questo comando non può essere necessariamente buono. Un'opzione consiste nell'attendere un periodo di inattività quando si può essere certi che nessuno accederà al database, rinominare la tabella corrente, quindi utilizzare create table e insert into ... select from per trasferire le colonne che non si desidera eliminare.

Una delle versioni successive di Oracle ha effettivamente un'eliminazione software che può solo contrassegnare una colonna come inutilizzata senza rimuoverla fisicamente. Ha lo stesso effetto dal momento che non puoi più fare riferimento a esso e c'è un comando lungo le linee di alter table ... drop unused columns che è pensato per essere eseguito in un tempo calmo, che fa il duro lavoro di rimuoverlo fisicamente.

Questo ha il vantaggio di "scomparire" immediatamente le colonne senza trascinare le prestazioni del database durante le ore di punta.

11

ALTER TABLE XXX DROP COLUMN YYY;

3

Per tavoli di grandi dimensioni questo può essere molto lento. Spesso può essere molto più veloce creare una nuova tabella, un duplicato di quello vecchio ma con le modifiche e inserire i dati. Rilasciare la vecchia tabella e quindi rinominare la nuova tabella.

2

Questo può essere eseguito anche tramite la GUI SSMS.

Mi piace questo metodo perché avvisa se ci sono delle relazioni su quella colonna e può anche eliminare automaticamente anche quelle. Come afferma PaxDiablo, se ci sono relazioni, devono prima essere cancellate.

  1. tavolo Put in visualizzazione struttura (click destro sul tavolo) in questo modo:

enter image description here

  1. clic destro sulla colonna nella visualizzazione struttura della tabella e fare clic su "Elimina Colonna"

enter image description here

A questo punto, se ci sono delle relazioni che dovrebbero anche essere cancellate, ti chiederà se vuoi eliminare anche quelle.