2009-03-05 12 views
9

Sto lavorando con SQL Server (sono un noob di SQL Server) e sto provando ad alterare una tabella. Voglio CREATE TABLE LIKE per archiviare in modo sicuro dati mentre io cadere le chiavi e vincoli e tutte le altre rigamorole che SQL Server sembra richiedere quando si modifica sul tavolo originale, ma non sono stato in grado di trovare una corrispondenza di quel comando ...Qual è l'equivalente di "CREATE TABLE ... LIKE ..." in SQL Server

+0

io uso Visual Studio SQL Server Explorer per questo scopo, permette aggiornamenti automatici della struttura del database. – Ginden

risposta

14

Si può fare

SELEZIONA * IN #MyTable_tmp DA MyTable

Quindi modificare il MyTable e copiare nuovamente i dati. Altro gli approcci che ho visto è quello di creare una nuova tabella chiamandola Mytable_Tmp (non una tabella temporanea), che sarà la tua nuova tabella.

Quindi copiare i dati eseguendo tutte le migrazioni necessarie. Quindi si rilascia la tabella originale e si rinomina su Mytable.

Oppure è possibile ottenere uno dei numerosi strumenti eccellenti che confrontano i database e generano script di differenze o VSTS DB Edition (fornito con sviluppatore) e che è possibile eseguire uno script diff da un file di progetto in un DB.

Modifica

Quando si esegue SELECT * INTO #MyTable FROM MyTable, SQL Server crea una nuova tabella temporanea denominata #MyTable che soddisfa ogni colonna e il tipo di dati dal vostro selezionare clausola. In questo caso stiamo selezionando * in modo che corrisponda a MyTable. Questo crea solo le colonne che non copia i valori di default, gli indici dei vincoli o quant'altro.

+0

La mia domanda non è come inserire i dati in una tabella temporanea già esistente. Sono più preoccupato per la creazione di una tabella temporanea che corrisponda alla tabella esistente. Ho dozzine di tabelle che devo modificare e non voglio creare manualmente i tavoli temporanei. – Ichorus

+0

Ahh! Molto bene! Grazie! – Ichorus

+0

E le chiavi? indice? chiavi esterne? –

17

si desidera ricreare la stessa struttura?

come su questo

SELECT * 
into test 
FROM myRealTable 
where 0=1 

sono dati saranno inseriti nella nuova tabella

+2

SELECT top 0 * nella prova FROM myRealTable, otterrà anche lo stesso risultato –

Problemi correlati