CREATE TABLE new_table_name LIKE old_table_name со значениями AUTO_INCREMENT для old_table_name

Могу ли я создать новую таблицу со статусом автоинкриминации старой таблицы в клиенте mysql?

Думаю, что ALTER TABLE new_table_name AUTO_INCREMENT=@my_autoincr_iment мне поможет, но эту конструкцию надо использовать с постоянным значением. Я не хочу использовать сложный сценарий.


person Minor    schedule 02.03.2010    source источник


Ответы (2)


mysql> create table new_table like old_table;

mysql> select @my_auto_increment:=auto_increment from information_schema.tables where table_name='old_table';

mysql> set @query = CONCAT("alter table new_table auto_increment = ", @my_auto_increment);

mysql> prepare stmt from @query;

mysql> execute stmt;

mysql> deallocate prepare stmt;

Спасибо моему брату!

person Minor    schedule 02.03.2010

Ваш CREATE TABLE может указать auto_increment для использования:

mysql> create table foo (i int primary key auto_increment, s varchar(12)) auto_increment = 10;
Query OK, 0 rows affected (0.19 sec)

mysql> insert into foo (s) values ("s");
Query OK, 1 row affected (0.09 sec)

mysql> select * from foo;
+----+------+
| i  | s    |
+----+------+
| 10 | s    |
+----+------+
1 row in set (0.03 sec)
person Frank Shearar    schedule 02.03.2010
comment
Я не знаю, как опубликовать синтаксис mysql. Ваш пример не подходит. - person Minor; 02.03.2010
comment
mysql› set @my_auto_increment=555; Query OK, затронуто 0 строк (0,00 с) mysql› select @my_auto_increment; +--------------------+ | @my_auto_increment | +--------------------+ | 555 | +--------------------+ 1 строка в наборе (0,00 сек) mysql› ALTER TABLE zz AUTO_INCREMENT=@my_auto_increment; ОШИБКА 1064 (42000): ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «@my_auto_increment» в строке 1 - person Minor; 02.03.2010
comment
Спрашивающий хочет создать новую таблицу, используя предложение LIKE. Обычно это происходит, когда вам нужно создать несколько таблиц (например, архивировать огромный набор данных), когда предоставление отдельных значений auto_increment и определений таблиц нецелесообразно. - person Abhijit Buchake; 13.12.2019