Ai-je raison de comprendre que CRÉER OU REMPLACER signifie essentiellement "si l'objet existe, déposez-le, puis créez-le de toute façon?"
Si oui, qu'est-ce que je fais de mal? Cela marche:
CREATE TABLE foo (id NUMBER,
title VARCHAR2(4000) DEFAULT 'Default Title')
Et ce n'est pas le cas (ORA-00922: option manquante ou invalide):
CREATE OR REPLACE TABLE foo (id NUMBER,
title VARCHAR2(4000) DEFAULT 'Default Title')
Est-ce que je fais quelque chose de stupide? Je ne semble pas pouvoir trouver beaucoup de documentation sur cette syntaxe.
CREATE OR REPLACE
fonctionne également pour les synonymes et les déclencheursLe script suivant devrait faire l'affaire sur Oracle:
la source
Ne fonctionne pas avec les tableaux, uniquement les fonctions, etc.
Voici un site avec quelques exemples .
la source
Une procédure utile pour les bases de données oracle sans utiliser d'exceptions (dans certaines circonstances, vous devez remplacer user_tables par dba_tables et / ou contraindre le tablespace dans la requête):
la source
la source
Si vous le faites dans le code, vérifiez d'abord la table dans la base de données en utilisant la requête SELECT table_name FROM user_tables WHERE table_name = 'XYZ'
si enregistrement trouvé, tronquer la table sinon créer une table
Travaillez comme Créer ou Remplacer.
la source
Vous pouvez utiliser CORT ( www.softcraftltd.co.uk/cort ). Cet outil permet de CRÉER OU REMPLACER une table dans Oracle. On dirait:
Il préserve les données.
la source
Donc, je l'utilise et cela a très bien fonctionné: - cela fonctionne plus comme un DROP IF EXISTS mais fait le travail
J'espère que cela aide également Référence: Erreur PLS-00103 dans PL / SQL Developer
la source
«Créer ou remplacer une table» n'est pas possible. Comme d'autres l'ont indiqué, vous pouvez écrire une procédure et / ou utiliser begin execute immédiatement (...). Parce que je ne vois pas de réponse sur la façon de (re) créer le tableau, j'ai mis un script comme réponse.
PS: dans la lignée de ce que jeffrey-kemp a mentionné: ce script ci-dessous ne sauvegardera PAS les données déjà présentes dans la table que vous allez supprimer. En raison du risque de perte de données, dans notre entreprise, il est uniquement autorisé de modifier les tables existantes sur l'environnement de production, et il n'est pas autorisé à supprimer des tables. En utilisant la déclaration de la table de dépôt, tôt ou tard, vous obtiendrez la police de l'entreprise à votre bureau.
la source
Je ferais quelque chose comme ça
la source
Si c'est pour MS SQL .. Le code suivant s'exécutera toujours, que la table existe déjà ou non.
la source