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: 
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;

```