SQL: supprimer toutes les données de toutes les tables disponibles
Je suis en utilisant oracle DB pour maintenir plus de 30 tables, comment puis-je supprimer toutes les données de toutes les tables? Je veux seulement supprimer les données, mais pas déposer les tables.
- Cette question semble être hors-sujet, car il appartient à dba.stackexchange.com
Vous devez vous connecter pour publier un commentaire.
Générer un script pour tronquer (= supprimer toutes les lignes de) tous les tableaux:
Puis d'exécuter le script.
truncate
est non-transactionnelle, c'est à dire qu'il ne peut pas être annulée.Il n'y a pas de commande " ALTER TABLE XXX DÉSACTIVER TOUTES les CONTRAINTES
Je propose ceci;
Pour aborder la question des contraintes, quelque chose comme cela devrait fonctionner:
alter table ... disable all constraints
jette unORA-01735: invalid ALTER TABLE option
si il n'y a pas de contrainte défini pour la table, ce qui entraînerait le script à ne pas tronquer tous table si il y a au moins une table sans contrainte. Vous pourriez placer leexecute immediate
dans unbegin .. exception
bloc.L'inconvénient potentiel avec un truncate est qu'il peut s'échouer sur les contraintes d'intégrité référentielle. Si vous souhaitez désactiver les contraintes de clé étrangère d'abord, puis de faire le tronquer, puis de le ré-activer les contraintes.
Le "plus" avec le clonage le schéma (exp et de la pmi), c'est que vous pouvez également supprimer et recréer de l'espace de table trop (que vous pouvez faire si vous voulez récupérer une partie de l'espace disque physique en tant que résultat de la suppression de toutes les données).
Clone le schéma, puis déposer les anciennes tables?
J'ai créé cette procédure stockée, en utilisant les réponses mentionnées ci-dessus.
Cela fonctionne parfaitement sans erreurs ou des exceptions.
Une légère variation sur Andomar réponse à tronquer toutes les tables pour un utilisateur spécifique non seulement à ceux de l'utilisateur actuel:
Remplacer le
user/schema
peu au-dessus avec le nom de l'utilisateur/schéma (entre guillemets) qui vous intéresse.Supprimer toutes les données de toutes les tables dans oracle
Pour plus d'info: http://www.oracleinformation.com/2014/10/delete-all-the-data-from-all-tables.html
ces deux lignes de script sont les meilleurs