Как изменить все таблицы в моей базе данных, чтобы использовать AUTO_INCREMENT = 1 - PullRequest
2 голосов
/ 05 июня 2011

В моей базе данных около 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 ;

Ответы [ 2 ]

5 голосов
/ 05 июня 2011
select concat('alter table ',table_name,' auto_increment = 1;') 
from information_schema.tables
where table_schema = 'your_db';

затем запустите сгенерированный вывод.Кстати это странные вопросы.Если вы используете truncate table_name, значение auto_increment будет перезапущено с 1.

edit.Вы можете использовать в outfile, чтобы перенаправить запросы в текстовый файл, а затем вызвать его.

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'
5 голосов
/ 05 июня 2011

Чтобы изменить значение счетчика 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;");
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...