IBM PureData System for Analytics, Version 7.1

TRUNCATE

La commande TRUNCATE permet de supprimer toutes les lignes d'une table. Elle produit le même effet que la commande DELETE, mais elle est plus rapide que cette dernière pour les tables volumineuses. En outre, la commande TRUNCATE libère tout l'espace disque alloué à une table, cet espace devenant à nouveau disponible.

Vous pouvez utiliser la commande TRUNCATE dans une transaction explicite ou dans une procédure stockée pour apporter d'autres modifications associées aux données dans une unité atomique. Lorsque vous utilisez la commande TRUNCATE de cette manière :
  • En dehors du cas où la table tronquée a été créée dans la même transaction, l'espace de stockage de la table n'est pas libéré (disponible pour être réutilisé) tant que la transaction de troncature n'a pas été validée.
  • La transaction de troncature peut être annulée, auquel cas le stockage et le contenu de la table restent intacts.
  • La table est verrouillée et aucun accès simultané (commandes SELECT comprises) à la table à partir d'autres sessions ou transactions n'est autorisé tant que la transaction de troncature n'a pas été validée ou annulée. L'annulation peut faire suite à une commande ROLLBACK ou à un échec d'exécution dans la transaction.
  • Si la transaction de troncature accède à d'autres tables, la probabilité d'interblocage augmente. Vous pouvez éviter ce problème en exécutant LOCK TABLE <nomtable> IN ACCESS EXCLUSIVE MODE au début de toute transaction ou procédure qui tronque une ou plusieurs tables. Pour des instructions sur l'utilisation de cette commande, voir LOCK TABLE.
  • La commande TRUNCATE TABLE est bien plus rapide que la suppression de toutes les lignes à l'aide de la commande DELETE FROM <table> et ne requiert pas de commande GROOM TABLE par la suite pour récupérer l'espace. Toutefois, il existe un léger risque que, dans certains cas, des transactions simultanées qui tentent d'accéder à une même table et de la tronquer reçoivent le message suivant : ERROR: Cannot access table because of concurrent truncateor ERROR: Cannot truncate table because of concurrent insert or update. Vous pouvez minimiser ce risque en utilisant la commande LOCK TABLE et en conservant une transaction qui tronque une ou plusieurs tables active uniquement pour la durée nécessaire à la réalisation de son objectif.

Syntaxe

Syntaxe de troncature d'une table vide :
TRUNCATE [ TABLE ] <nom>

Entrée

La commande TRUNCATE accepte l'entrée suivante :
Tableau 1. Entrée de la commande TRUNCATE
Entrée Description
<nom> Nom de la table à tronquer.

Sortie

La commande TRUNCATE génère la sortie suivante :
Tableau 2. Sortie de la commande TRUNCATE
Sortie Description
TRUNCATE TABLE La commande a abouti.

Droits

Vous devez être administrateur, propriétaire de la table, propriétaire de la base de données ou du schéma ou votre compte doit avoir la commande Truncate sur la table ou la classe d'objet Table.

Syntaxe

Voici un exemple de syntaxe :
  • Supprimez toutes les lignes de la table bigtable :
    MYDB.SCH1(USER)=> TRUNCATE  bigtable;
  • Remplacez le contenu de la table mytable par de nouvelles données :
    BEGIN;
    TRUNCATE TABLE mytable;
    INSERT INTO mytable SELECT …;
    COMMIT;


Feedback | Copyright IBM Corporation 2014 | Last updated: 2014-02-28