2009-12-02 19 views
94
CREATE TABLE foo SELECT * FROM bar 

copia il foo tavolo e duplicati come una nuova tabella denominata barCopia tabella senza copiare i dati

Come posso copiare lo schema di foo in una nuova tabella denominata bar senza copia sui dati come bene?

+1

come fare lo stesso in sqlserver 2005? – Thunder

+0

cosa significa dalla barra? –

risposta

87

Prova:

CREATE TABLE foo SELECT * FROM bar LIMIT 0 

Oppure:

CREATE TABLE foo SELECT * FROM bar WHERE 1=0 
+2

Penso che il secondo esempio sia il modo universale :-) – Khb

+0

come fare lo stesso in sqlserver 2005? – Thunder

+3

@Thunder: prova 'seleziona * in pippo dalla barra dove 1 = 0' – Andomar

17
SHOW CREATE TABLE bar; 

si otterrà un CREATE per quella tabella, modificare il nome della tabella, o qualsiasi altra cosa che ti piace, e poi eseguirlo .

Ciò consentirà di copiare gli indici e anche di modificare manualmente la creazione della tabella.

È inoltre possibile eseguire la query all'interno di un programma.

+0

Come si può convertire 'show create table bar' in una istruzione eseguibile dinamicamente? – Pacerier

+0

il risultato dato da 'show create table bar' è già eseguibile, se lo script ha il permesso di creare tabelle, è possibile analizzarlo e quindi eseguire anche alter istruzioni della tabella. –

+0

Signore, sei il padrone dell'universo. Grazie – bonitzenator

272

Prova

CREATE TABLE foo LIKE bar; 

così le chiavi e gli indici vengono copiati su come, pure.

Documentation

+26

Questa è una risposta migliore in quanto copia anche gli indici! – Chaitan

+1

QUESTO E 'IL MODO MIGLIORE! GRAZIE UOMO. – Aldee

+1

È molto meglio, ma continua a non copiare le chiavi esterne. –

Problemi correlati