Sim você pode. Você só precisa fazer essa coluna ser um índice.
CREATE TABLE `test` (
`testID` int(11) NOT NULL,
`string` varchar(45) DEFAULT NULL,
`testInc` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`testID`),
KEY `testInc` (`testInc`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
insert into test(
testID,
string
)
values (
1,
'Hello'
);
insert into test(
testID,
string
)
values (
2,
'world'
);
Irá inserir linhas com valores de incremento automático para 'testInc'. No entanto, isso é uma coisa muito idiota de se fazer.
Você já disse o jeito certo de fazer:
"Faça o PK comment_id e imponha a integridade por meio de um índice exclusivo em book_id, timestamp, user_id."
Essa é exatamente a maneira que você deve fazer. Ele não apenas fornece uma chave primária adequada para a tabela que você precisará para consultas futuras, mas também satisfaz o princípio do menor espanto .