Alter table sous Oracle

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

  1. 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
    1. 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
      1. 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
        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
          1. 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
            1. 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
              1. Sinon il y a le "Column_id" qui peut peu être t'aider.
                0