2011-01-28 10 views
1

テーブルのリストを実行してストアドプロシージャで切り捨てるかどうかを議論しています。それはMySqlで簡単だろうと私はそれをやるだろうか?ストアドプロシージャを作成してテーブルのリストを反復処理し、それらをMySQLで切り捨てます。

+0

可能な複製の[どのように私はMySQLデータベースからすべてのテーブルを切り捨てることができますか?](http://stackoverflow.com/questions/4756430/how-can-i-truncate-all-tables-from-a-mysql-database) –

+0

@OMGポニー:それは違うと思います。彼は、情報スキーマを使用してデータベース内のすべてのテーブルを収集し、それらを切り捨てます。リスト内で定義されているように、選択テーブルを切り捨てたいだけです。私にとっては、その質問に答えるのは恐ろしい修正でしょう! – stevebot

+0

それはテーブルのリストを取得する方法です - SHOW TABLESは同義語であり、SOには無数の類似した質問があります:http://stackoverflow.com/search?q=[mysql]+truncate+tables –

答えて

1

必要な情報の主要な部分は、テーブルのリストです。あなたはINFORMATION_SCHEMA.TABLES SELECT * FROMを行い、SPROCをコーディングし、エントリを調べる前に、あなたが期待していないいくつかがあるかもしれない、しかし

select table_name from information_schema.tables 

- システム・テーブルと、そのようなので、あなた:ほとんどのプラットフォームでは、これをサポートあなたが望むセットを得るためにフィルターを作る必要があるかもしれません。私はその多くをMySQLを行いませんので

は、私はあなたのコードを表示することはできませんが、MS SQLからこれを翻訳し、いくつかの空白を埋めることができれば、あなたはそれを動作させることができます。

declare @table_name varchar(200) 
while 1=1 begin 
    select top 1 @table_name = table_name 
     from information_schema.tables 
    where ....possible filter... 
    if @table_name is null break 

    -- for this line you may need dynamic sql 
    truncate table @table_name 
end  
+0

これはMySQLの構文ではなくSQLサーバーです。 –

+1

@OMG Pony、したがって答えの行は "ince Iそれほど多くの場合、私はあなたにコードを示すことはできませんが、MS SQLからこれを翻訳し、いくつかの空白を記入することができれば、それを機能させることができます: –

関連する問題