mysql
设置联合索引
例如: tableA 表中有aa,bb两个字段,如果不希望有2条一模一样的记录(即:aa字段的值可以重复; bb字段的值也可以重复,但是一条记录(aa,bb)组合值不允许重复),需要给 t_aa 表添加多个字段的联合唯一索引:
alter table tableA add unique index(aa,bb);
问题二,联合索引无法批量执行sql
设置了aa和bb的联合索引,导致了我10条数据里面只要有1条数据不合格,其他的9条合格数据也跟着没法提交
解决思路,ON DUPLICATE KEY UPDATE
ON DUPLICATE KEY UPDATE 是Mysql特有的语法,仅Mysql有效
注意:ON DUPLICATE KEY UPDATE首先会检查插入的数据主键是否冲突,如果冲突则执行更新操作,如果ON DUPLICATE KEY UPDATE的子句中要更新的值与原来的值都一样,则不更新。如果有一个值与原值不一样,则更新:
sql
INSERT INTO tableA ( aa, bb, age)
VALUES( 1, '张三', 11 )
ON DUPLICATE KEY UPDATE age= 12
解释:如果数据库里面,对应的 (aa,bb) 的组合,已经有了(1,‘张三’),那就执行update的更新更新一下age字段,变为12