我想创建一个唯一的帐单标识符/号码。我希望它是一个常量字符串、年份和一个附加数字的组合。例如“ABC-2013-100001”。我该怎么做才能确定帐单标识符是唯一的?我正在考虑维护一个 billing_id,比如一个唯一且自动递增的主键。然后我只需选择 max(billing_id) 以获取最后一个添加 1 和前缀“ABC-2013”,然后将其插入表中。问题是这是一个三步法。选择,做某事,插入。恐怕会发生类似情况,当 2 个用户同时执行此操作时,每个人都选择相同的数字,所以从技术上讲,他们插入了相同的标识符。我错了,反应过度还是这种生成独特的ID很常见?我应该采取不同的方法吗?
编辑
好的,所以我做了这样的事情:
$data = array(
'billing_identifier' => 'law-'.$year."-".$this->db->insert_id()
);
// inserting into billing_identifiers
$this->db->insert('billing_identifiers', $data);
$bill_id = $this->db->insert_id();
但是 $this->db->insert_id() 在开头是 0 是有道理的,在调用插入函数之后它会得到最后一个 id。有没有办法一次性做到这一点?