IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Vider une table


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut [SQL] Vider une table
    Bonjour,

    J'ai table "historique" que je veux vider avant d'y mettre des nouvelles données.
    Après 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

  2. #2
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 76
    Points : 76
    Points
    76
    Par défaut
    essaye "TRUNCATE"

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Merci.
    J'ai mis : TRUNCATE table beahistorique; mais j'ai une erreur

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Quelle erreur ? on peut pas deviner

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    J'ai table "historique" que je veux vider avant d'y mettre des nouvelles données
    tu veux en fait supprimer tous les enregistrements de ta table pour en insérer de nouveaux ?

    Si c'est bien ça alors TRUNCATE me semble trop fort et un simple DELETE (sans filtre) devrait suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM HISTORIQUE;
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Pourquoi c'est trop fort ?

  7. #7
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: parse error, unexpected T_STRING in c:\weblocal\sites\test\portefeuille\maj_historique.php on line 9
    Cela correspond à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TRUNCATE table beahistorique;
    Pourquoi TRUNCATE est trop fort?

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "TRUNCATE TABLE ma_table";
    mysql_query($sql) or die(mysql_error());
    Ca ira mieux

  9. #9
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Oui ça va nettement mieux

    Merci

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    D'après ce qu'on m'a expliqué : TRUNCATE détruit les données d'une table sans condition possible et surtout sans possibilité de faire un rollback. Hormis ces différences, TRUNCATE ne semble pas présenter de différence 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 plutôt que TRUNCATE (moi qui venait pour aider je vais apprendre des choses génial ) ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut pourquoi DELETE plutôt que TRUNCATE
    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 requête, 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 réinitialiser également les index, en fait comme si elle venait d'être créée.

    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 autoincrémentés), ils ne débuteront pas à 1 mais à l'ancien MAXID + 1.

    Si j'ai dit une bétise merci de me le dire.

    Citation Envoyé par Magnus Voir le message
    D'après ce qu'on m'a expliqué : TRUNCATE détruit les données d'une table sans condition possible et surtout sans possibilité de faire un rollback. Hormis ces différences, TRUNCATE ne semble pas présenter de différence 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 plutôt que TRUNCATE (moi qui venait pour aider je vais apprendre des choses génial ) ?

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup, ça fonctionne niquel.
    Les index sont bien réinitialisés avec le truncate.
    Merci

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Jarel Voir le message
    Merci beaucoup, ça fonctionne niquel.
    Les index sont bien réinitialisés avec le truncate.
    Merci
    J'utilise PostGreSQL 9.2 et avec TRUNCATE, mes index n'ont pas été réinitialisés.
    Sniff

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vider une table sous SQL Server
    Par phenomeno dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/04/2011, 12h48
  2. pb pour vider une table sous sql
    Par xence dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/03/2006, 08h09
  3. [PL/SQL] Charger une table dans une collection
    Par nosnoss dans le forum Oracle
    Réponses: 10
    Dernier message: 03/03/2005, 17h56
  4. PL/SQL Partager une table PL/SQL... possible ?
    Par Yorglaa dans le forum PL/SQL
    Réponses: 35
    Dernier message: 16/02/2004, 08h56
  5. [SQL] Remplacer une table
    Par rstephane dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/05/2003, 17h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo