2014-01-18 2 views
0

Как можно вставить уникальную строку в mysql? id и userid оба - разные столбцы. Я установил id уникально. Но идентификатор пользователя и контрольный столбец не должны повторяться. Возможно ли это?Как вставить уникальные данные таблицы, кроме id в codeigniter?

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);}} 
+0

Не могли бы вы немного разъяснить свой вопрос? Я действительно не понимаю тебя. – Zarathuztra

+0

Возможно, также добавьте то, что выглядит таблица, и то, что вы тоже хотите. – Jahmic

+0

Я должен проверить повторяющиеся данные пользователя и данные проверки. – user3145460

ответ

0

Вы можете сохранить свой 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 
} 
+0

Если я даю userid, это зависит от меня, но checkin - это то же, что и не принимается :(Мне нужно, когда я даю userid и checkin - это то же самое, что время только не должно приниматься. – user3145460

+0

В getTableData() вы проверяете условие с 'или' ? Если это так, измените его как 'и' –

+0

Хорошо .. Спасибо за ответ – user3145460

0

В этом случае, вы можете действительно сделать userid и checkin столбцов в качестве составного первичного ключа. Если вы хотите, вы можете использовать id в качестве первичного ключа и создать уникальный индекс для двух других столбцов в сочетании.

Возможно, вы также должны проверить, существует ли запись, прежде чем вставлять новую комбинацию, которая приведет к ошибке MySQL.

Cheers!

Смежные вопросы