Rechercher : dans
Par :

Alter table sous Oracle

Dernière réponse le 4 aoû 2009 à 23:28:46 fred, le 13 mai 2004 à 14:59:26 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « Alter table sous Oracle » dans :
SQL - Modification de table Voir Modification de table Il est possible de supprimer une table grâce à la clause DROP, il existe aussi des commandes moins extrêmes permettant L'ajout de colonnes La modification de colonnes La suppression de colonnes Enfin, il est possible...
Oracle - Récupérer les mots de passe perdus VoirPour récupérer un mot de passe au niveau d'Oracle, il suffit de se connecter en mode ligne de commandes sur le serveur : #sqlplus /nolog SQL>conn / as sysdba SQL>alter user UTILISATEUR identified by MOT_DE_PASSE;
Oracle - Les séquences VoirCet article s'appuie sur la version 8.1.6 d'Oracle. Une séquence est un objet de base de données Oracle, au même titre qu'une table, une vue, etc... Autrement dit, il appartient à un utilisateur, on peut le manipuler, le modifier, à condition...
Oracle - Le dictionnaire de données VoirPrésentation du dictionnaire de données Oracle Le dictionnaire de données Oracle représente le coeur de la base de données. Il s'agit d'un ensemble de tables systèmes contenant les informations relatives à la structure de la base de...

1

DaNot, le 13 mai 2004 à 15:08:39
  • +3

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...

Répondre à DaNot

2

fred, le 13 mai 2004 à 15:25:02

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 !?

Répondre à fred

3

DaNot, le 13 mai 2004 à 15:35:11

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...

Répondre à DaNot

4

DaNot, le 13 mai 2004 à 15:39:13

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...

Répondre à DaNot

5

fred, le 13 mai 2004 à 15:41:21

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 !

Répondre à fred

6

 angel, le 4 aoû 2009 à 23:28:46

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))

Répondre à angel
Collection CommentÇaMarche.net