mel list_php wrote:
From: Dan Buettner <[EMAIL PROTECTED]>
To: mysql@lists.mysql.com
Subject: Changing range of identity column for future inserts
Date: Tue, 15 Nov 2005 08:50:03 -0600
I would like to change one of my tables so that future inserts use a
higher range of numbers for the primary key values.
I have a table 'event' with column:
id int unsigned not null auto_increment primary key
Currently new records are going into the table with id column values
in the 3,000,000-range. I'd like to change that so that new records
get id column values in the 13,000,000 range or so ... but without
changing the values of existing records.
This is so I can combine data into another, existing table with 12
million entries, without overlapping id numbers or assigning different
ones.
I can't find how to do this on the MySQL site.
Any suggestions?
Thanks,
Dan
I think you want that:
When you add an AUTO_INCREMENT column, column values are filled in with
sequence numbers for you automatically. For MyISAM tables, you can set
the first sequence number by executing SET INSERT_ID=value before ALTER
TABLE or by using the AUTO_INCREMENT=value table option.
From MySQL 5.0.3, you can use the ALTER TABLE ... AUTO_INCREMENT=value
table
option for InnoDB tables to set the sequence number for new rows if the
value is greater than the maximum value in the AUTO_INCREMENT column.
(from http://dev.mysql.com/doc/refman/5.0/en/alter-table.html)
hth,
melanie
The ALTER TABLE solution works in 4.1, as well
<http://dev.mysql.com/doc/refman/4.1/en/alter-table.html>:
ALTER TABLE event AUTO_INCREMENT=13000000;
Note, however, that any ALTER TABLE operation makes a new copy of your table and
replaces the old with the new when done. This can take a while with a large
table, and writes are locked out until it's finished.
You can also simply insert a dummy row with the id column explicitly named and
set to 13000000. The next regularly inserted row will get id = 13000001.
Subsequent rows will get higher numbers. You can verify that the next
Auto_increment value has been changed by looking at the output of
SHOW TABLE STATUS LIKE 'event';
You can delete the dummy row immediately with MyISAM tables. With InnoDB, you
can delete it as soon as you have one real row with an id > 13000000. (See the
manual for details
<http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-column.html>).
Michael
Michael
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]