Alter table après le mot-clé dans Oracle
ALTER TABLE testTable ADD column1 NUMBER(1) DEFAULT 0 NOT NULL AFTER column2;
Pourquoi ne puis-je pas utiliser la syntaxe de mySql à Oracle? La commande ci-dessus fonctionne avec MySql. Pouvez-vous me donner un équivalent qui fonctionne?
Error report:
SQL Error: ORA-01735: invalid ALTER TABLE option
01735. 00000 - "invalid ALTER TABLE option"
Je me demande si il existe un moyen d'utiliser après la clause de commande Oracle que j'ai fourni?
êtes-vous pour demander la corrent syntaxe ou êtes-vous pour vous demander le pourquoi?
"Pourquoi ne puis-je pas utiliser la syntaxe de mySql à Oracle?". Autant que je sache. MySQL a quelques très spéciale de la syntaxe SQL, qui diffère du reste. Presque tous les fournisseurs de base de données syntaxe proche de SQL standard, mais pas la mise en œuvre de la norme SQL. Ils sont presque tous différents.
J'ai ajouté les 2 comme une réponse à votre question
déjà +1 pour la belle réponse
"Pourquoi ne puis-je pas utiliser la syntaxe de mySql à Oracle?". Autant que je sache. MySQL a quelques très spéciale de la syntaxe SQL, qui diffère du reste. Presque tous les fournisseurs de base de données syntaxe proche de SQL standard, mais pas la mise en œuvre de la norme SQL. Ils sont presque tous différents.
J'ai ajouté les 2 comme une réponse à votre question
déjà +1 pour la belle réponse
OriginalL'auteur radu florescu | 2012-01-19
Vous devez vous connecter pour publier un commentaire.
Parce que SQL est une algèbre relationnelle. Il s'en fout un peu au sujet de "où" colonnes sont situées à l'intérieur d'un tableau, seulement qu'ils existent.
De l'obtenir pour fonctionner dans Oracle, simplement se débarrasser de la
after
clause. La documentation Oracle pouralter table
est ici mais ça se résume à:Il est pas
after
clause pour laalter table
commande.ensuite, vous avez besoin de parler à Oracle, pas nous. Je ne suis pas près de Larry 🙂
Donc il ne peut pas être fait?
ne pas perdre de données, vous pouvez créer une nouvelle table, le transfert de l'ancien données (voir la réponse à partir d'Ilion pour un exemple). Vous aurez probablement envie de le faire pendant les périodes d'inactivité, mais c'est faisable.
Vous pouvez également utiliser le DBMS_REDEFINITION paquet pour réorganiser les colonnes, sans tenir hors ligne.
OriginalL'auteur paxdiablo
Oracle ne prend pas en charge l'ajout de colonnes dans le milieu de la table, seulement en les ajoutant à la fin. Votre conception de base de données et les fonctionnalités des applications ne devraient pas dépendre de l'ordre des colonnes dans le schéma de base de données. Vous pouvez toujours spécifier un ordre dans votre instruction select, après tout.
Cependant, si pour une raison quelconque, vous devez simplement avoir une nouvelle colonne dans le milieu de votre table il y a un travail autour de.
Où la
SELECT 0 AS col1
est votre nouvelle colonne, puis vous spécifiez d'autres colonnes de votre table d'origine. Mettre leSELECT 0 AS col1
à l'endroit approprié dans l'ordre que vous souhaitez.Ensuite, vous pouvez exécuter une instruction alter table sur la colonne à assurez-vous que c'est le type de données que vous désirez.
OriginalL'auteur Ilion
Essayez ceci :
OriginalL'auteur DrLazer