我想提出一个标准的做法,以防止任何表在重要的地方重复.在大多数情况下,重复是变量的组合而不是一个.我的主键只是每个字段的唯一ID,所以我不能使用它们.我一直在做的是首先查询表,然后如果所讨论的组合的行数是0,则进行插入.但是,我已经读过,应该可以在多个字段上设置唯一键以强制实现唯一性. INSERT IGNORE听起来很有可能,但是,我需要忽略多个列.
例如,对于字段关注者和跟随者,表中可以有多个关注者和关注者,但应该只是两者的一种组合.
任何人都可以建议语法首先在多个字段上创建唯一键,然后执行SQL插入查询以防止欺骗?非常感谢.
解决方法:
您可以在这些列上创建多列索引并强制实现唯一性:请参阅http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html中的MySQL手册.
例如,在具有列id(唯一主键),colA和colB的表中,运行:
ALTER TABLE table ADD UNIQUE KEY (colA,colB)
就是这样:任何INSERT导致这两列中的重复条目合并,现在将返回MySQL错误而不是通过.如果您使用INSERT IGNORE,如果执行它将违反此唯一约束,则不会抛出MySQL错误,并且您的INSERT语句将被静静地忽略.