2013-04-22 80 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();