【发布时间】:2011-01-22 15:35:16
【问题描述】:
我可以在mysql客户端用旧表的自动增量状态创建一个新表吗?
我认为,ALTER TABLE new_table_name AUTO_INCREMENT=@my_autoincr_iment 对我有帮助,但这种构造必须使用常量值。
我不想使用困难的脚本。
【问题讨论】:
标签: mysql auto-increment sql-like create-table
我可以在mysql客户端用旧表的自动增量状态创建一个新表吗?
我认为,ALTER TABLE new_table_name AUTO_INCREMENT=@my_autoincr_iment 对我有帮助,但这种构造必须使用常量值。
我不想使用困难的脚本。
【问题讨论】:
标签: mysql auto-increment sql-like create-table
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;
谢谢我的兄弟!
【讨论】:
您的 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)
【讨论】:
set @my_auto_increment=555; 查询正常,0 行受影响(0.00 秒)mysql> select @my_auto_increment; +--------------------+ | @my_auto_increment | +--------------------+ | 555 | +--------------------+ 1 row in set (0.00 sec) mysql> ALTER TABLE zz AUTO_INCREMENT=@my_auto_increment; ERROR 1064 (42000): 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“@my_auto_increment”附近使用正确的语法