2013-04-22 69 views
2

所以,我在想,如果你推出这个查询:如何在插入查询中获得auto_increment值?

INSERT INTO users (name, gender, location) VALUES ('Ricky-Bobby', 'm', 'Daytona Beach, FL'); 

并假设users有主键的另一个自动递增列,你将如何能够获得该主键的值而不启动另一个查询?

+1

你的意思是这样吗? http://www.php.net/manual/en/mysqli.insert-id.php – str 2013-04-22 18:30:26

回答

3

Codeigniter通过函数$this->db->insert_id()简化了MySQL查询SELECT LAST_INSERT_ID()

虽然这查询,这是一个非常轻的不会是性能问题。有一点需要注意的是:

  • 如果你想在你插入的行的ID; $this->db->insert_id()
  • 如果你想AUTO_INCREMENT值,那就是下一个值的INSERT将具有id,只需$this->db->insert_id() + 1
+0

由于并发性问题,我不会推荐第二个选项。海事组织你应该只能在插入后恢复。 (如果操作不是非常接近,即使第一个选项可能会失败) – Birla 2014-07-07 10:35:45

+0

我同意。在我创建之前唯一一次假设ID是从头开始构建数据库并只运行一次查询。我还没有一个好的理由来做任何事情,而不是在插入后取得ID。 – 2014-07-07 10:42:29

1

您可以与您的查询相结合LAST_INSERT_ID()

INSERT INTO users (name, gender, location) VALUES ('Ricky-Bobby', 'm', 'Daytona Beach, FL'); 
SELECT LAST_INSERT_ID();