+----+---------------+-------+---------------+
| 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,并检查该对是否已经存在并据此给出反馈。
答案 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
);