我的数据库中有大约30个表:
table1
table2
table3
table4
table5
等。
我希望所有表都使用AUTO_INCREMENT=1
,如何修改表格?
以下是其中一个表的示例DDL。我从未在任何表中定义AUTO_INCREMENT
,默认情况下它是获取值。
CREATE TABLE `amenities` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
答案 0 :(得分:5)
要更改要用于新行的AUTO_INCREMENT计数器的值,请执行以下操作:
ALTER TABLE `table_name` AUTO_INCREMENT = 1;
要更新所有31个表,您可以使用此php脚本:
<?php
$tables = array('table1','table2','tableX'); //continue here
foreach($tables as $update)
{
mysql_query("ALTER TABLE `".$update."` AUTO_INCREMENT = 1;");
}
?>
答案 1 :(得分:5)
select concat('alter table ',table_name,' auto_increment = 1;')
from information_schema.tables
where table_schema = 'your_db';
然后运行生成的输出。
顺便说一句,这是一个奇怪的问题。如果使用truncate table_name
,则auto_increment值将从1重新开始。
修改。您可以使用out outfile在txt文件中重定向查询,然后重新调用它。
select concat('alter ',table_name,' auto_increment = 1;')
into outfile 'd:/queries.txt'
lines terminated by '\r\n'
from information_schema.tables
where table_schema = 'your_db'