Alter table sous Oracle

Fermé
fred - 13 mai 2004 à 14:59
 Dohz - 5 avril 2012 à 10:42
Salut,

J'ai une requête MySQL du type : "ALTER TABLE nom_table ADD champ type AFTER champ;" que je voudrais exécuter sur une base Oracle. Manque de bol, le mot clé AFTER ne marche pas sous Oracle !! Comment pourrais-je modifier la requête pour qu'elle ait le même effet sous Oracle ??

Merci pour vos réponses.

7 réponses

DaNot Messages postés 221 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 4 novembre 2005 163
13 mai 2004 à 15:08
Salut,

La syntaxe de la commande ALTER TABLE en Oracle :
ALTER TABLE <Nom>
   ADD (<Colonne> <Type>, <Colonne> <Type>, ...)

ou alors
ALTER TABLE <Nom>
   MODIFY (<Colonne> <Type>, <Colonne> <Type>, ...)


Je ne connais pas exactement ce que veux dire le mot AFTER en MySQL. Si tu veux plus d'info, j'ai la doc Oracle en ligne...

DaNot
un Libre ouvert à la source...
16
la solution c de créer le champ que vous voulez ajouter:
alter table (nom table)
add (nom champ type (nb caractère) not null))


puis créer une autre table apartir de cella

create table t2 from (select champ1 , champ2 , (et vous deplacer le champ que vous avez créer la ou vous , voulez) from table 1)

apres ça il faut suprimer la table 1 pour pouvoir renomer la table 2 t2

drop table1
rename table 2 to table 1

et vous pouvez apres ajouter des contraintes
exemple
alter table table1
add (constraint c1 check (champ1>10))
7
DaNot Messages postés 221 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 4 novembre 2005 163
13 mai 2004 à 15:35
Si, si ! c'est impossible, je te le confirme.
le seul moyen d'inserer une colonne entre deux colonnes existantes, c'est de casser la table !
Un point positif, c'est tres facile de creer une table a partir d'une autre :
CREATE TABLE <NouveauNom>
SELECT *
FROM <AncienNom>;
Le seul incovenient (et non des moindres) c'est que tous les index, cles etrangeres petent si la table est supprimee....

DaNot
un Libre ouvert à la source...
1
oh merde....

bon, le seul moyen c'est de re-créer la table alors en rajoutant le champ à la main. bon ben je vais m'y atteler alors.

merci pour tes infos !
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
merci pour ta réponse,

en MySQL le mot clé AFTER permet de spécifier après quel champ on doit ajouter le nouveau (ce peut-être en plein milieu de la table et non pas obligatoirement à la fin).

par exemple si on a une table : id | champ1 | champ2, alter table add champ3 after champ1 donnera : id | champ1 | champ3 | champ2.

Option que je ne retrouve pas chez Oracle... ça me parait bizarre que ce soit impossible à faire !?
0
DaNot Messages postés 221 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 4 novembre 2005 163
13 mai 2004 à 15:39
Une precision quand meme, cela est vrai pour la version 7. Peut etre ont ils retabli la chose depuis ....

DaNot
un Libre ouvert à la source...
0
Sinon il y a le "Column_id" qui peut peu être t'aider.
0