2016-03-16 1 views
2
+----+---------------+-------+---------------+ 
| id |  name  | phone | ip_addr | 
+----+---------------+-------+---------------+ 
| 1 | customname001 | 1234 | 192.168.100.1 | 
| 2 | customname002 | 2156 | 192.168.100.2 | 
| 3 | customname003 | 9685 | 192.168.100.3 | 
| 4 | customname004 | 1546 | 192.168.100.1 | 
| 5 | customname005 | 1234 | 192.168.100.1 | 
+----+---------------+-------+---------------+ 

В моем проекте codeigniter я пытаюсь создать модель, которая поможет мне вставить новую строку в таблицу, которая выглядит примерно так. Условие, которое я хочу применить здесь, - проверить, уникальна ли комбинация имени, телефона и ip_addr или нет.Как создать пару столбцов, уникальных в mysql

Я знаю, что для одного столбца, если мы установим значение как уникальное, значения не могут быть повторены, но мой пример - это другой случай, когда я хочу, чтобы комбинация всех столбцов (кроме идентификатора) уникальный.

Может ли кто-нибудь помочь мне здесь в создании модели, которая поможет мне добавить новую пару имен, телефонов и ip_addr и проверить, существует ли пара, и, соответственно, дать отзыв.

+0

Почему бы не проверить, существуют ли эти значения? –

ответ

4
ALTER TABLE `table` ADD UNIQUE `unique_index`(`name`, `phone`, `ip_addr`); 
1
insert into table (name, phone, ip_addr) 
select new.name, new.phone, new.ip_addr 
from table 
where (new.name,new.phone,new.ip_addr) not in (
    select name,phone,ip_addr from table 
); 
2

Если у вас есть представление, в котором пользователь собирается ввести имя, телефон и IP_Address вы можете установить правила проверки формы, которые легко предотвратить дублирование записи !!

Таким образом, установить правило is_unique для каждого поля is_unique[tbl_name.column_name]

Для Ex:

$this->form_validation->set_rules('name', 'User Name', 'required|trim|xss_clean|is_unique[users.name]); 

ПРИМЕЧАНИЕ: Это только полезно, если вы должны ввести значение с точки зрения иначе вы должны проверить с помощью SQl Query

+0

Но это будет уникальным единственный столбец. Но я ищу, как установить комбинацию столбцов, чтобы быть уникальной. Я думаю, это невозможно, и, вероятно, мне нужно написать sql-запрос. –

+0

Нет, вы можете установить валидацию для любого количества столбцов! Для этого вы собираетесь установить правила проверки для каждого поля, требующего или что-то еще ... Итак, сделайте то же самое для этого поля. @ KiranKumarDash – Kunal

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