# PHP > PHP & Base de donnes >  [SQL] Vider une table

## philippef

Bonjour,

J'ai table "historique" que je veux vider avant d'y mettre des nouvelles donnes.
Aprs recherche j'ai vu alter_table et drop_table mais j'ai l'impression que a supprime la table!!
Moi je veux seulement la vider.

Merci de votre aide

----------


## the_jeck

essaye "TRUNCATE"

----------


## philippef

Merci.
J'ai mis : TRUNCATE table beahistorique; mais j'ai une erreur

----------


## Mr N.

Quelle erreur ? on peut pas deviner  :;):

----------


## Magnus

> J'ai table "historique" que je veux vider avant d'y mettre des nouvelles donnes


tu veux en fait supprimer tous les enregistrements de ta table pour en insrer de nouveaux ?

Si c'est bien a alors TRUNCATE me semble trop fort et un simple DELETE (sans filtre) devrait suffire : 

```
DELETE FROM HISTORIQUE;
```

----------


## Mr N.

Pourquoi c'est trop fort ?

----------


## philippef

le message d'erreur:


```
Parse error&#58; parse error, unexpected T_STRING in c&#58;\weblocal\sites\test\portefeuille\maj_historique.php on line 9
```

Cela correspond  :

```
TRUNCATE table beahistorique;
```

Pourquoi TRUNCATE est trop fort?

----------


## Mr N.

::lol::  


```

```

Ca ira mieux  :;):

----------


## philippef

Oui a va nettement mieux  ::D:  

Merci

----------


## Magnus

D'aprs ce qu'on m'a expliqu : TRUNCATE dtruit les donnes d'une table sans condition possible et surtout sans possibilit de faire un rollback. Hormis ces diffrences, TRUNCATE ne semble pas prsenter de diffrence par rapport  DELETE (?).
C'est pour a que dans ce contexte, DELETE est suffisant s'il s'agit simplement de supprimer toutes les lignes d'une table.

Mais peut tre pourriez-vous m'en dire plus sur la raison qui vous fait choisir DELETE plutt que TRUNCATE (moi qui venait pour aider je vais apprendre des choses gnial  ::wink:: ) ?

----------


## francky66

Bonjour, Je ne suis pas un expert en sql, mais je dirai que le DELETE est utiliser pour supprimer un enregistrement (ou plusieurs ou tous) dans une table, selon la requte, et n'aura aucune incidence sur les autres ni sur la table, je pense aux index. Alors qu'un TRUNCATE va effacer tous les enregistrements, mais rinitialiser galement les index, en fait comme si elle venait d'tre cre.

Fait le test avec un DELETE sur tout dans ta base, puis si je ne me trompe pas, lorsque tu feras un nouvel enregistrement (si tu as des id autoincrments), ils ne dbuteront pas  1 mais  l'ancien MAXID + 1.

Si j'ai dit une btise merci de me le dire.




> D'aprs ce qu'on m'a expliqu : TRUNCATE dtruit les donnes d'une table sans condition possible et surtout sans possibilit de faire un rollback. Hormis ces diffrences, TRUNCATE ne semble pas prsenter de diffrence par rapport  DELETE (?).
> C'est pour a que dans ce contexte, DELETE est suffisant s'il s'agit simplement de supprimer toutes les lignes d'une table.
> 
> Mais peut tre pourriez-vous m'en dire plus sur la raison qui vous fait choisir DELETE plutt que TRUNCATE (moi qui venait pour aider je vais apprendre des choses gnial ) ?

----------


## Jarel

Merci beaucoup, a fonctionne niquel.
Les index sont bien rinitialiss avec le truncate.
Merci  ::):

----------


## Ronald1980

> Merci beaucoup, a fonctionne niquel.
> Les index sont bien rinitialiss avec le truncate.
> Merci


J'utilise PostGreSQL 9.2 et avec TRUNCATE, mes index n'ont pas t rinitialiss.
Sniff

----------

