2011-10-26 19 views
11
ALTER TABLE Log ADD log_id bigint IDENTITY BEFORE cust_id_fk 

Il codice precedente aggiunge una nuova colonna all'ultima posizione. Voglio che venga aggiunto alla prima posizione. Anche io voglio renderlo come chiave primaria.Aggiungere una colonna a una posizione specifica in MSSQL Server

+2

"L'ordine" delle colonne in una tabella * davvero * non dovrebbe avere importanza: il loro ordine di archiviazione fisico è li kely diverso da quello che vedi comunque. –

+1

Fa ** no ** differenza tranne che per il tuo OCD. [Uno] (http://stackoverflow.com/questions/6121884/sql-server-2008-cannot-insert-new-column-in-the-middle-position-and-change-dat/6121952#6121952) e [ due] (http://stackoverflow.com/questions/6692021/performance-space-implications-when-ordering-sql-server-columns/6692107#6692107). FYI @Damien_The_Unbeliever alcune informazioni per il backup – gbn

+2

Voglio che le mie colonne siano belle. – Chloe

risposta

9

È necessario rilasciare la tabella e ricrearla con le colonne nell'ordine corretto. Se si apportano modifiche alla tabella in SSMS, è possibile generare uno script di modifica che è possibile utilizzare per distribuire la modifica su un server di produzione.

+0

Questo è un punto soggettivo. Tuttavia la tua domanda è contrassegnata come SQL Server, quindi perché ho citato SSMS. –

+0

SO selezionato la tua risposta perché non esiste un metodo per implementare lo stesso –

+0

Questo è il motivo per cui non usiamo più MSSQL (solo dicendo) ..potrebbe suggerire Google per "MongoDB";) – sean2078

-2

È necessario creare un'altra tabella e copiare i dati. Ma dai un'occhiata alla "posizione ordinale" e prova ad aggiornarlo?

SELECT 
    ORDINAL_POSITION 
    ,COLUMN_NAME 
    ,DATA_TYPE 
    ,CHARACTER_MAXIMUM_LENGTH 
    ,IS_NULLABLE 
    ,COLUMN_DEFAULT 
FROM 
    INFORMATION_SCHEMA.COLUMNS 
WHERE 
    TABLE_NAME = 'Product' 
ORDER BY 
    ORDINAL_POSITION ASC; 

chiave primaria è un'altra domanda per la quale è possibile trovare un sacco di risposte.

+0

Non correlato e non può essere fatto in ogni caso – gbn

3

Anche se la domanda è obsoleta, sarebbe necessaria una versione più accurata di Management Studio.

È possibile creare la colonna manualmente o con Management Studio. Ma Management Studio richiederà di ricreare la tabella e si tradurrà in un timeout se ci sono già troppi dati in esso, evitate a meno che la tabella non sia leggera.

Per modificare l'ordine delle colonne è sufficiente spostarle in Management Studio. Ciò non dovrebbe richiedere (Eccezioni molto probabile esiste) che Management Studio ricreino la tabella poiché molto probabilmente cambierà l'ordinamento delle colonne nelle definizioni della tabella.

Ho fatto in questo modo in numerose occasioni con le tabelle che non ho potuto aggiungere colonne con la GUI a causa dei dati in esse. Quindi ha spostato le colonne con la GUI di Management Studio e le ha semplicemente salvate.

Si passerà da un intervallo di tempo garantito a pochi secondi di attesa.

0

In MSSMS selezionare la tabella in Esplora oggetti. Fare clic con il tasto destro e selezionare Modifica. Ciò porterà una nuova scheda in cui è possibile trascinare le colonne in un nuovo ordine predefinito. Salva e presto! Fatto.

0

Passi:

  1. rinominare la tabella originale per tablename_temp
  2. creare una nuova tabella contenente la nuova colonna
  3. inserto in nometabella select * from tablename_temp
  4. ricreare le chiavi esterne e altro vincolo sulla nuova tabella
Problemi correlati