2010-10-20 5 views
0

Как сделать запрос в SQL, чтобы удалить всю запись, существует в каждой таблице.Удалить всю запись существует во всех таблицах

Там можно написать каждую таблицу имен, используя команду delete. Но писать каждую таблицу имен потребуется много времени.

Я уже попробовать DELETE FROM * в MySQL, но он получил сообщение об ошибке:

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

Итак, это в PHP ??? Я дал ответ на C# (вроде псевдо) ... – IAbstract

+1

Дубликат http://stackoverflow.com/questions/935284/is-there-a-way-to-truncate-most-tables-in-a-mysql- схема http://stackoverflow.com/questions/454174/how-to-empty-all-rows-from-all-tables-in-mysql-in-sql –

+0

@dboarman: нет, на самом деле я хочу вставить запись после того, как я удалю все записи, есть в db. спасибо –

ответ

1

Вы просто должны сделать TRUNCATE запрос для каждой таблицы. Вы также можете использовать delete, но усечение, как правило, более подходит для того, что вы делаете.

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

Существует нет * или всего селектора таблиц.

0

Я считаю, что MySql имеет SQL заявления следующим образом:

Show tables 

Создать свой объект команды с Show tables как текст команды и выполнить.

Используя этот оператор, вы можете выполнить запрос и заполнить MySqlDataReader. Итерируйте читателя и поместите имена таблиц в форматированную строку следующим образом.

// 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(); 
    } 
} 

Это должно быть достаточно близко, чтобы помочь вам попасть на правильный путь.

0

Вы можете использовать INFORMATION_SCHEMA для перебора по всем таблицам и динамического выполнения инструкции DELETE или TRUNCATE.

0

Операция DELETE может использоваться.

После этого удалите все строки, но индексы (например, автоматические приращения) не будут сброшены.

DELETE * FROM TABLEX

После удаления всех строк и индексы будут сброшены

TRUNCATE TABLEX

1

Пожалуйста, используйте этот

<?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]); 
} 
?> 

Все самое лучшее

0

Если вы хотите автоматизировать этот процесс, вам необходимо написать код, внешний для MySQL. Используйте show tables, чтобы получить имена таблиц, а затем вызовите TRUNCATE на каждом из них.