【发布时间】:2017-02-16 08:33:29
【问题描述】:
您好,我无法在数据库中插入跟踪号。似乎在某些情况下它会生成一个重复的条目。我正在根据我的 first_track 表中的最后一个条目生成跟踪号,并将其增加 1。现在我的问题是,当用户同时点击时。它会生成相同的跟踪号。我该如何预防?顺便说一句,这是我生成跟踪号的代码。我还将每个月的第一个条目返回到 0001。
<!----------Model-------->
$this->db->order_by("first_trackid", "desc");
$query = $this->db->get('first_track');
if($query->num_rows() > 0)
{
$result = $query->result();
if(date('m') != substr($result[0]->dtsno,2,2)){
$dtsno = date('ym').'0001';
}
else{
$dtsno = $result[0]->dtsno+1;
}
return $dtsno;
}
else
{
return $dtsno = date('ym').'0001';
}
<!--- END model------->
<!---controller----------->
//call the model for generating dtsno
$firsttrack->dtsno = $this->user_information_model->dtsno();
//insert to table first_entry
$this->user_information_model->first_track($firsttrack);
【问题讨论】:
-
你想生成序列格式的轨道ID或任何随机的否?
-
我想每月增量生成它。例如,对于 2017 年 1 月,第一个条目是 17010001,那么 1 月的下一个条目是 17010001+1。 17 是年份,01 是月份,接下来的 4 位数字是每个月的跟踪号计数
-
所以当多个用户同时提交时,您是代码重复?
-
是的。这是我的主要问题。 2 个不同的用户同时提交条目,或者每隔几秒钟提交条目。
标签: php mysql codeigniter activerecord