MySQL进程中主键唯一键重复值的解决方案

本文主要介绍在插入数据中避免将重复值插入到表中的方法,主要涉及忽略、重复密钥更新和替换。接下来,让我们看看三种方法。



忽略



使用忽略时,当插入的值与主键(主键)或唯一键(唯一键)重复时,它会自动忽略重复行,不影响后续行的插入。



创建测试表




创建表tignore
(非null主键),
名为
默认的字符集utf8);



如果插入的记录中有一个密钥复制,正常的插入将失败,整个语句失败。




如果忽略记录行重复值的插入记录中有重复值,则使用忽略,不影响其他行的插入。



更换



当插入的记录与主键或唯一键匹配时,使用替换删除表中的重复记录行。




更换为Treplace()值(1,1),(1,2),(2,2);


创建测试表




如果表下降存在Treplace;
创建表treplace
(非null主键),
名为
默认的字符集utf8);



从输出信息中,您可以看到4行受到影响,表示它是先插入(1,1)然后删除(1,1)。






关于重复密钥更新


当插入的记录与主键或唯一密钥重复时,将执行后来定义的更新操作。



它相当于首先执行插入操作,然后根据主键或唯一密钥执行更新操作。



创建测试表




如果表中存在tupdate滴;
创建表tupdate
(非null主键),
名国际独特的关键
默认的字符集utf8);
插入tupdate()值(1,1),(1,2)重复密钥更新名称=姓名+ 1;
插入tupdate()值(1,1),(1,2)重复密钥更新名称=值(姓名);


第一个语句相当于执行:




插入tupdate()值(1,1)
更新tupdate
组名=姓名+ 1
其中id = 1;


第二个语句相当于执行:




插入tupdate()值(1,1)
更新tupdate
集名= 2 + 1
其中id = 1;


在重复密钥更新之后,值的使用指插入记录的值,并且没有值引用表的值。




注意:在重复密钥更新之后执行的更新更新记录是重复或主键的id的主键,这是非常重要的。



例如,下面是这样的例子:




插入tupdate()值(1,1),(2,1)重复密钥更新名称=值(ID);


这是唯一的关键名称重复,但是主键不重复,语句的执行是这样的:




插入tupdate()值(1,1)
更新tupdate
集名= 2 + 1
其中id = 1;



不要考虑插入主键id = 2的记录。



总结



上述三种处理重复值的方法都支持标准插入语法,包括插入…值,插入……,插入…选择。



mysql处理中的主键,在进程中只有主键重复值的解决方案,介绍这么多,希望对你有所帮助!