为什么last_insert_id()会在失败的插入上返回一个值?

时间:2013-03-17 16:52:50

标签: mysql codeigniter-2

使用codeigniter和具有唯一键约束的表,如下所示:

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)

1 个答案:

答案 0 :(得分:3)

它返回通过此连接进行的最后一次成功插入的id。