Aggiunta di una colonna tra le due colonne in SQL server

Si può aggiungere una colonna a una tabella, inserendo tra due colonne esistenti in SQL Server senza bisogno di eliminare e ricreare la tabella?

InformationsquelleAutor PhilBrown | 2011-03-16

 

6 Replies
  1. 6

    La semplice risposta è no. C’è un motivo per cui l’ordine delle colonne è importante per te?

    • non proprio, stavo attraversando un tutorial che mi ha chiesto di farlo. Non mi sono preoccupato perché è funzionalmente inutile, è solo suscitato il mio interesse.
  2. 7

    Mediumly risposta lunga, sì (ish) ma è brutto e probabilmente non vuole farlo.

    si prega di notare: questo codice crea una tabella fisica

    CREATE TABLE MyTest (a int, b int, d int, e int)
    
    INSERT INTO MyTest (a,b,d,e) VALUES(1,2,4,5)
    
    SELECT * FROM MyTest
    
    ALTER TABLE MyTest ADD c int
    ALTER TABLE MyTest ADD d_new int
    ALTER TABLE MyTest ADD e_new int
    
    UPDATE MyTest SET d_new = d, e_new = e
    
    ALTER TABLE MyTest DROP COLUMN d
    ALTER TABLE MyTest DROP COLUMN e
    
    EXEC SP_RENAME 'MyTest.d_new', 'd';
    EXEC SP_RENAME 'MyTest.e_new', 'e';
    
    SELECT * FROM MyTest 
    
    DROP TABLE MyTest
  3. 0

    Prima risposta, no.

    Seconda risposta, in base a questo thread http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=58912, trovato via Posso logicamente riordinare le colonne in una tabella?, si potrebbe creare la colonna quindi riordinare le colonne della tabella modificando le tabelle di sistema. Ma sembra incredibilmente disordinato e non vorrei la fiducia che le cose non si romperebbe.

    • Non è possibile modificare le tabelle di sistema nelle versioni dopo l’installazione di SQL Server 2000.
  4. 0

    sì. È possibile trascinare e rilasciare in modalità di progettazione, o copiare e incollare nel modificare la tabella in modalità


    in risposta ai commenti, sì, questo è con SQL Server Management Studio tramite l’interfaccia utente, e sotto il cofano, ma di fare il drop/ricreare si sta cercando di evitare, quindi no, non è possibile farlo senza il server che fa per voi.

    • Che farà un drop/ricreare in background.
    • ok, non sapevo.
    • Sto assumendo questo è quello che si farebbe se si stesse utilizzando SQL Management Studio. Sei sicuro che SQL Server non è necessario eliminare e ricreare dietro le quinte. Ho avuto la sensazione che non copia i dati in una tabella temporanea e quindi elimina e ricrea la tabella prima di copiare i dati. Non ho accesso a SQL Server adesso o mi piacerebbe fuoco di SQL Profiler e provare quello che hai suggerito.
    • stavo cercando un modo per farlo in l’istruzione ALTER TABLE, che è quello che SQL Management Studio fa comunque.
  5. 0

    Sì, è possibile aggiungere questa è la query per la vostra preoccupazione:

    ALTER table table_name ADD column column_name(new) datatype AFTER column_name
    • La tua risposta è per MySQL. Stanno chiedendo su SQL Server.

Lascia un commento