Question: 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,  <<<<  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.

Answer: 
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](http://dev.mysql.com/doc/refman/5.1/en/alter-table.html) 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.