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

copias del foo mesa y lo duplica como una nueva tabla llamada barra decopia de tabla sin copiar datos

¿Cómo puedo copiar el esquema de foo a una nueva tabla llamada barra de sin copia en los datos mientras que el ¿bien?

+1

cómo hacer lo mismo en sqlserver 2005? – Thunder

+0

qué significa de la barra? –

Respuesta

87

Probar:

CREATE TABLE foo SELECT * FROM bar LIMIT 0 

O:

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

Creo que el segundo ejemplo es la forma universal :-) – Khb

+0

¿cómo hacer lo mismo en sqlserver 2005? – Thunder

+3

@Thunder: intente 'seleccionar * en foo desde la barra donde 1 = 0' – Andomar

17
SHOW CREATE TABLE bar; 

obtendrá una sentencia CREATE para esa tabla, edite el nombre de la tabla, o cualquier otra cosa que te gusta, y luego ejecutarlo .

Esto le permitirá copiar los índices y también ajustar manualmente la creación de la tabla.

También puede ejecutar la consulta dentro de un programa.

+0

¿Cómo podría convertir 'show create table bar' en una declaración ejecutable dinámicamente? – Pacerier

+0

el resultado dado por 'show create table bar' ya es ejecutable, si el script tiene el permiso para crear tablas, puede analizarlo y luego ejecutar alter table statements también. –

+0

Usted señor, es el maestro del universo. Gracias – bonitzenator

272

Trate

CREATE TABLE foo LIKE bar; 

para que las teclas y los índices se copian como, bueno.

Documentation

+26

¡Esta es una mejor respuesta ya que también copia índices! – Chaitan

+1

¡ESTA ES LA MEJOR MANERA! GRACIAS HOMBRE. – Aldee

+1

Es mucho mejor, pero aún no copia las claves externas. –

Cuestiones relacionadas