2010-10-20 7 views
0

Comment faire une requête dans SQL pour supprimer tous les enregistrements existent dans chaque table.Supprimer tous les enregistrements existent dans toutes les tables

Il est possible d'écrire chaque table de noms à l'aide de la commande delete. Mais il faudra beaucoup de temps pour écrire chaque table de noms.

Je suis déjà essayer DELETE FROM * MySQL, mais il eu erreur:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*' at line 1

+0

Alors, est-ce en PHP ??? J'ai fourni une réponse en C# (sorte de pseudo) ... – IAbstract

+1

Dupliquer http://stackoverflow.com/questions/935284/-there-a-way-to-truncate-most-tables-in-a-mysql- schéma http://stackoverflow.com/questions/454174/how-to-empty-all-rows-from-all-tables-in-mysql-in-sql –

+0

@dboarman: non, en fait je veux insérer enregistrer après je suis supprimer tous les enregistrements existent en DB. THX –

Répondre

1

Vous aurez juste à faire une requête TRUNCATE pour chaque table. Vous pouvez également utiliser delete, mais tronquer est généralement plus approprié pour ce que vous faites.

TRUNCATE TABLE table1; 
TRUNCATE TABLE table2; 
TRUNCATE TABLE table2; 

Il n'y a pas de sélecteur de table * ou tout.

0

Je crois que MySql a une instruction SQL comme suit:

Show tables 

Créez votre objet de commande avec Show tables que le texte de commande et exécuter. En utilisant cette instruction, vous pouvez exécuter la requête et remplir MySqlDataReader. Itérez le lecteur et placez les noms de table dans une chaîne formatée comme suit.

// create connection string 
... 
while (myDataReader.Read()) 
{ 
    // execute command 
    string command = "TRUNCATE TABLE {0}"; 

    MySqlCommand myCommand = new MySqlCommand(); 
    myCommand.CommandText = string.Format(command, reader[0]); 

    using (MySqlConnection myConnection = new MySqlConnection(myConnString)) 
    { 
     myCommand.Connection = myConnection; 
     myCommand.Connection.Open(); 

     myCommand.ExecuteNonQuery(); 
    } 
} 

Ceci devrait être assez proche pour vous aider à aller dans la bonne direction.

0

Vous pouvez utiliser INFORMATION_SCHEMA pour parcourir toutes les tables et exécuter dynamiquement l'instruction DELETE ou TRUNCATE.

0

L'instruction DELETE peut être utilisée.

La suppression supprimera toutes les lignes, mais les index (par exemple les incréments automatiques) ne seront pas réinitialisés.

DELETE * FROM TABLEX

Après supprimera toutes les lignes aussi les index seront remis à zéro

TRUNCATE TABLEX

1

S'il vous plaît utiliser cette

<?php 
mysql_connect('localhost', 'user', 'password'); 
$dbName = "database"; 
mysql_select_db($dbName) 
$result_t = mysql_query("SHOW TABLES"); 
while($row = mysql_fetch_assoc($result_t)) 
{ 
    mysql_query("TRUNCATE " . $row['Tables_in_' . $dbName]); 
} 
?> 

Tous les meilleurs

0

Si vous voulez automatiser, vous avoir à écrire du code externe à MySQL. Utilisez show tables pour obtenir les noms des tables, puis appelez le TRUNCATE sur chacun d'eux.

Questions connexes