Morgan Tocker对多种做法进行了一个测试,详细的测试结论,详细的测试代码,推荐使用下面两种方式之一:
第一种:
CREATE TABLE option1 (id int not null primary key auto_increment) engine=innodb; # each insert does one operations to get the value: INSERT INTO option1 VALUES (NULL); # $connection->insert_id();
第二种:
CREATE TABLE `Tickets64` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`stub` char(1) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `stub` (`stub`)
) ENGINE=MyISAM
REPLACE INTO Tickets64 (stub) VALUES ('a');
SELECT LAST_INSERT_ID();
flickr采用了第二种方式,并且也发表一篇日志,详细论述了其他的方案的缺陷包括第一种。