今天遇到一个场景:
一张表中要求某两个字段不能重复
假设字段‘a’与字段‘b’不可重复,即
id(key) | a | b | c | d |
1 | a1 | b1 | c1 | d1 |
2 | a1 | b1 | c2 | d2 |
上表是不对的,也即是说,执行这样一条sql语句也是不对的:
insert into table_name values ('a1', 'b1', 'c3', 'd3');
那么如何在插入之前就知晓这条数据是否是合理的呢?
解决方法1:
在插入之前先查询,比较之后,没问题再执行sql语句。但是这样未免太麻烦。
解决方法2:
给表添加索引,索引设置为唯一,并绑定‘a’和‘b’两个字段(此处用的项目中的图,ide为pycharm):
这样在插入的时候,就会自动校验'a','b'两个字段,避免重复。
需要注意的是,添加了这样的唯一索引后,插入重复数据会报错,因此需要关键字ignore
insert ignore into table_name values('a1', 'b1', 'c3', 'd3');
这样插入数据,虽然是错的,但是不会报错,而且也不会插入任何数据。