[英]How to insert unique table data except id in codeigniter?
如何在mysql中插入唯一行? id和userid都是不同的列。 我設置的id是唯一的。但是userid和checkin列不應重復。 這可能嗎?
if($this->dx_auth->is_logged_in()){
$insertData['userid'] = $this->dx_auth->get_user_id();
$insertData['checkin'] = $checkin;
$insertData['checkout'] = $checkout;
$insertData['location'] = $location;
$insertData['guest'] = $nof_guest;
$id = $this->dx_auth->get_user_id();
$result = $this->Common_model->getTableData('searchlist', array("userid" => $id));
if($result->num_rows > 4){
$res = $result->result();
$del_id = $res[0]->id;
$conditions = array("id" => $del_id);
$this->Common_model->deleteTableData('searchlist', $conditions);
}
if($location != "0"){
$this->Common_model->inserTableData('searchlist', $insertData);}}
在這種情況下,您實際上可以將userid
和checkin
列作為復合主鍵。 如果需要,您仍然可以使用id
作為主鍵,並為合並的其他2列創建唯一索引。
在插入可能導致MySQL錯誤的新組合之前,您可能還應該檢查記錄是否存在。
干杯!
您可以將id
保留為主鍵,並為用戶表自動遞增。
然后,您必須為userid
和checkin
創建組合的唯一密鑰。
CREATE UNIQUE INDEX user_checkin_time ON searchlist (userid, checkin);
在控制器中,您必須在插入/更新之前驗證用戶標識並簽入。
$isExist = $this->Common_model->getTableData('searchlist', array("userid" => $id,"checkin"=>$checkin));
if($isExist->num_rows()>0)
{
// throw error message as checkin time already exist
}
else
{
// continue with further code
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.