Bonjour, je souhaite supprimer toutes les données de mes tables postgresql, mais pas la table elle-même. Comment pourrais-je faire ça?
postgresql
vo1d
la source
la source
Réponses:
Utilisez la
TRUNCATE TABLE
commande.la source
Le contenu de la table / des tables dans la base de données PostgreSQL peut être supprimé de plusieurs manières.
Suppression du contenu de la table à l'aide de SQL:
Suppression du contenu d'une table:
Suppression du contenu de toutes les tables nommées:
Suppression du contenu des tables nommées et des tables qui y font référence (je l'expliquerai plus en détail plus loin dans cette réponse):
Suppression du contenu de la table à l'aide de pgAdmin:
Suppression du contenu d'une table:
Suppression du contenu du tableau et des tableaux qui y font référence:
Différence entre supprimer et tronquer:
De la documentation:
Travailler avec une table référencée à partir d'une autre table:
Lorsque vous avez une base de données qui a plus d'une table, les tables ont probablement une relation. A titre d'exemple, il y a trois tableaux:
Et quelques données préparées pour ces tableaux:
Les commandes de table font référence à la table clients et la table fidélité_cards fait référence à la table clients. Lorsque vous essayez de TRUNCATE / DELETE FROM la table qui est référencée par d'autres tables (les autres tables ont une contrainte de clé étrangère sur la table nommée), vous obtenez une erreur. Pour supprimer le contenu des trois tables, vous devez nommer toutes ces tables (l'ordre n'est pas important)
ou juste la table référencée avec le mot clé CASCADE (vous pouvez nommer plus de tables qu'une seule)
Il en va de même pour pgAdmin. Cliquez avec le bouton droit sur la table des clients et choisissez Tronquer en cascade.
la source
TRUNCATE
fait partie de ANSI SQL et est pris en charge dans tous les SGBD. J'ai suivi le lien et le document ne mentionne rien sur les extensions. Peut-être que le lien est incorrect ou obsolète?Pour les petites tables,
DELETE
c'est souvent plus rapide et nécessite un verrouillage moins agressif (pour une charge simultanée élevée):Sans
WHERE
condition.Pour les tables moyennes ou plus grandes
TRUNCATE tbl
, utilisez, comme @Greg publié.la source