如何在mysql

时间:2016-03-16 12:51:15

标签: php mysql codeigniter

+----+---------------+-------+---------------+
| 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项目中,我正在尝试构建一个模型,它将帮助我将一个新行插入到一个类似上面的表中。我想在这里应用的条件是检查name,phone和ip_addr的组合是否唯一。

我知道对于单个列,如果我们将值设置为唯一,那么值不能重复,但我的示例是一个不同的情况,我希望所有列(除了id)的组合是唯一的

任何人都可以帮助我构建模型,这将帮助我添加新的名称,电话和ip_addr,并检查该对是否已经存在并据此给出反馈。

3 个答案:

答案 0 :(得分:4)

ALTER TABLE `table` ADD UNIQUE `unique_index`(`name`, `phone`, `ip_addr`);

答案 1 :(得分: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查询

进行检查

答案 2 :(得分: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
);