我在表中插入一个序列号,该序列号始终递增,但是当多个请求同时到来时,它会为不同的请求插入相同的序列号。我正在使用 mysql 数据库。
我知道我在代码中过早地获取最大序列号,如果请求是同时到来的,那么它将为两者获取相同的序列号。在所有工作完成后更新序列号是个好主意。如果为新请求插入记录并更新前一个请求的序列号是在同一时间呢?
public function add(){
$session = $this->request->session();
$company_id = $session->read('Admin.company_id');
$emp_id = $session->read('Admin.emp_id');
$user_email_id = $session->read('Admin.email_id');
$employee_name = $session->read('Admin.employee_name');
$conn = ConnectionManager::get('default');
if ($this->request->is('post')) {
try{
$conn->begin();
$department = $this->request->data['department'];
$data = $this->request->data;
if(!array_key_exists('is_requisition_for_contractor', $data)){
$is_requisition_for_contractor = 0;
} else {
$is_requisition_for_contractor = $data['is_requisition_for_contractor'];
}
if(!array_key_exists('is_requisition_for_employee', $data)){
$is_requisition_for_employee = 0;
} else {
$is_requisition_for_employee = $data['is_requisition_for_employee'];
}
if(!array_key_exists('is_boulder_requisition', $data)){
$is_requisition_for_boulder = 0;
} else {
if($data['is_boulder_requisition'] == ''){
$is_requisition_for_boulder = 0;
} else {
$is_requisition_for_boulder = $data['is_boulder_requisition'];
}
}
我期待为每个请求输出不同的序列号。任何优化方法都可以做到这一点。提前致谢。