您好我在数据库中插入跟踪号码时遇到了问题。似乎在某些情况下它会生成重复的条目。我正在我的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);
答案 0 :(得分:1)
首先,为了确保您不会在数据库中获得重复值,请确保将列(“first_trackid”)索引(将其设置为唯一),该列保存表first_track中的跟踪编号。
其次,当用户启动进程时,您将使用基于时间戳的临时跟踪序列号。
当用户完成整个过程或换句话说,保存记录时,应该实际生成跟踪号码。那时,生成该号码并相应地显示给用户。这样,您就可以确保在模式中永远不会重复这些值。
此致