2010-03-02 15 views

Répondre

4

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;

Thx à mon frère!

1

Votre CREATE TABLE peut spécifier le auto_increment à utiliser:

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) 
+0

Je ne sais pas, comment la syntaxe post mysql. Votre exemple ne convient pas. – Minor

+0

mysql> 'set @ my_auto_increment = 555;' Demande OK, 0 lignes affectées (0.00 sec) mysql> 'sélectionnez @my_auto_increment;' + ----------------- --- + | @my_auto_increment | + -------------------- + | 555 | + -------------------- + 1 ligne dans l'ensemble (0.00 sec) mysql> 'ALTER TABLE zz AUTO_INCREMENT = @ mon_auto_increment;' ERREUR 1064 (42000) : Vous avez une erreur dans votre syntaxe SQL; consultez le manuel correspondant à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de '@my_auto_increment' à la ligne 1 – Minor