2011-01-28 44 views
1

我在辩论是否尝试运行表列表并使用存储过程截断它们。使用MySql会很容易吗?我该怎么做?创建一个存储过程遍历表中的列表并在MySQL中截断它们

+0

[我怎样才能截断MySQL数据库中的所有表?](http://stackoverflow.com/questions/4756430/how-can-i-truncate-all-tables-from-a-mysql-database) – 2011-01-28 00:49:14

+0

@OMG小马:我认为这是不同的。他使用信息模式收集数据库中的所有表格,然后截断它们。我只想截断列表中定义的选择表。对我来说,在这个问题上给出的答案将是一个可怕的修复! – stevebot 2011-01-28 01:01:28

回答

1

您需要的主要信息是表格列表。大多数平台都支持这一点:

select table_name from information_schema.tables 

但是,你的代码的存储过程之前,做一个SELECT * 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