Ver Mensaje Individual
  #9 (permalink)  
Antiguo 03/12/2012, 07:41
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Copiar estructura tabla mediante "CREATE TABLE"

No es que estés haciendo algo mal, esto tiene que ver con la forma como declaras el primary key en la primera tabla.

Si te fijas a jc3000 no le da problemas, ya que incluye el primary key como parte del campo.
Pero si hago esto que es funcionalmente lo mismo, se replica el escenario que indicas.

Código SQL:
Ver original
  1. SQL> CREATE TABLE prueba1
  2.   2      ( a NUMBER,
  3.   3      b NUMBER,
  4.   4      c NUMBER,
  5.   5      CONSTRAINT pkprueba1 PRIMARY KEY(a));
  6.  
  7. Tabla creada.
  8.  
  9. SQL> CREATE TABLE prueba2 AS SELECT *FROM prueba1 WHERE 1=0;
  10.  
  11. Tabla creada.
  12.  
  13. SQL> DESC prueba1
  14.  Nombre                                    ┐Nulo?   Tipo
  15.  ----------------------------------------- -------- -------------
  16.  
  17.  A                                         NOT NULL NUMBER
  18.  B                                                  NUMBER
  19.  C                                                  NUMBER
  20.  
  21. SQL> DESC prueba2
  22.  Nombre                                    ┐Nulo?   Tipo
  23.  ----------------------------------------- -------- -------------
  24.  
  25.  A                                                  NUMBER
  26.  B                                                  NUMBER
  27.  C                                                  NUMBER
  28.  
  29. SQL>

Para pasarlo bien, lo que puedes hacer es crear la segunda tabla así.
Código SQL:
Ver original
  1. CREATE TABLE prueba2 (a NOT NULL,b,c) AS SELECT *FROM prueba1 WHERE 1=0;

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming