SQL Oracle - copier la structure d'une table

Résolu/Fermé
Utilisateur anonyme - 27 août 2010 à 10:29
 Utilisateur anonyme - 27 août 2010 à 10:43
Bonjour,

Je cherche à creer un table vide, à l'identique d'une autre.
Je sais qu'il existe la formule magique :

CREATE TABLE TAB2 AS SELECT * FROM TAB1 WHERE 1=0 ;

cependant, je dois poursuivre ma requete avec un

... NOLOGING PARTITION BY RANGE(DATE1)(
PARTITION TAB2_2007 VALUES LESS THAN TO_DATE('01/01/2008','DD/MM/YYYY')),
PARTITION TAB2_2008 VALUES LESS THAN TO_DATE('01/01/2009','DD/MM/YYYY')),
PARTITION TAB2_2009 VALUES LESS THAN TO_DATE('01/01/2010','DD/MM/YYYY')));


Or, dans mes essais, cela ne marche pas avec la partie
(AS SELECT * FROM TAB1 WHERE 1=0)
alors que ça fonctionne quand je met des champs au hasard comme
(Numero1 NUMBER (1), Date1 DATE, Texte1 CHAR(50))


Je sais qu'il est possible de récuperer les information de la table (ici Tab1), dans une sorte de dictionnaire des tables, pour les concatener de façon correcte dans mon CREATE TABLE.

Quelqu'un sait-il comment faire cela ?

1 réponse

Utilisateur anonyme
27 août 2010 à 10:43
vous pouvez fermer ce post, il fallait juste changer l'ordre et ecrire :

CREATE TABLE TAB2 NOLOGING PARTITION BY RANGE(DATE1)(
PARTITION TAB2_2007 VALUES LESS THAN TO_DATE('01/01/2008','DD/MM/YYYY')),
PARTITION TAB2_2008 VALUES LESS THAN TO_DATE('01/01/2009','DD/MM/YYYY')),
PARTITION TAB2_2009 VALUES LESS THAN TO_DATE('01/01/2010','DD/MM/YYYY')))AS SELECT * FROM TAB1 WHERE 1=0;
2