2013-03-17 53 views
0

使用笨和表與唯一鍵約束如下:爲什麼last_insert_id()會在失敗的插入中返回一個值?

UNIQUE KEY `user_identity_unique` (`site_id`,`user_id`,`event_id`) 

然後將數據插入該表具有以下方法:

$this->db->insert('events', $data); 
return $this->db->insert_id(); 

當插入失敗由於鍵約束,即使沒有插入任何東西,$this->db->insert_id()仍然會返回一個值。我敢肯定MySQL是因爲調用$this->db->_error_message()的結果返回一個錯誤...

Duplicate entry '267-83880-07' for key 'user_identity_unique' 

這似乎是不正確的行爲 - 任何人都熟悉這個可以提供一些線索?爲什麼last_insert_id仍然會返回一個值? (在這種情況下,完全不相關的行的ID)

+0

您是否閱讀過文檔? – Kermit 2013-03-17 16:57:27

回答

3

它返回通過此連接進行的最後一次成功插入的ID。

+0

出於某種原因,我總是儘管它是最後一次插入嘗試的ID,如果它失敗了0,呃。謝謝。 – Will 2013-03-17 18:31:18

相關問題