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.
```
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;

```