Assuming this table with nearly 5 000 000 rows
CREATE TABLE `author2book` (
`author_id` int(11) NOT NULL,
`book_id` int(11) NOT NULL,
KEY `author_id_INDEX` (`author_id`),
KEY `paper_id_INDEX` (`book_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
is it possible to add a primary index column id
with autoincrement
as first place? I expect something like this:
CREATE TABLE `author2book` (
`id` int(11) NOT NULL AUTO_INCREMENT, <<<开发者_StackOverflow;< This is what I try to achieve!
`author_id` int(11) NOT NULL,
`book_id` int(11) NOT NULL,
KEY `author_id_INDEX` (`author_id`),
KEY `paper_id_INDEX` (`book_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Is this possible?
Edit: I should mention, that I'd like the added column to be populated.
You can use ALTER TABLE to add the column and index in one command. i.e.:
ALTER TABLE author2book ADD id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (id);
See the MySQL docs for ALTER TABLE for more info.
Create a new table with the structure you want and the auto-incrementing key, and then insert all of the records from this table into that new table... then drop (or rename) the original table, and rename the new table to the original name.
insert into newTable (author_id, book_id)
select * from author2book
newTable will then contain your desired output.
ALTER TABLE author2book
ADD COLUMN `id` int(11) NOT NULL FIRST;
Populate the id field manually (by a script maybe?), then:
ALTER TABLE author2book
MODIFY COLUMN `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY;
精彩评论