由于一开始使用了事务和排它锁所以并未担心出现这样的问题
但是突然发现在没有数据的情况下插入数据会出现重复数据
以为是行锁影响了,将行锁去除后再试竟然没有变化
于是想用其他方式代替select和insert的两条sql
防止重复数据的方法
insert ignore into
on duplicate key update
insert … select … where not exist
replace into
可以上4种都无法解决我的问题,因为我需要获得查询后的id或插入后的id
所以最后尝试什么都不用,只加一个唯一索引
这样担心会报错,所以想如果报错就使用ignore忽略错误,结果没报错
后面在没出现过重复数据,猜测这是mysql解析时的优化。
总结:加上唯一索引足以
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/20912.html
由于一开始使用了事务和排它锁所以并未担心出现这样的问题 但是突然发现在没有数据的情况下插入数据会出现重复数据 以为是行锁影响了,将行锁去除后再试竟然没有变化 于是想用其他方式代替select和insert的两条sql 防止重复数据的方法 insert ignore into on duplicate key update insert … select … where not exis...
摘要:我们需要用到的主键,唯一约束。主键保证了我们数据的唯一性。现在我们来创建一张新的数据表插入两断用户数据小明小明可以看到报错字段已经存在小明字段。所以已经是具有唯一约束性的字段。 在数据记录中我们为保证数据的唯一性,保证用户数据在数据中不出现重复记录。我们需要用到Mysql的主键key,唯一约束。 主键约束 PRIMARY KEY 一张数据表中只能存在一个主键字段。并且类型必须为数字。...
摘要:返回值语句会返回一个数,来指示受影响的行的数目。换句话说,如果没有发生重复关键字冲突,则子句中的可以引用被插入的的值。本函数特别适用于多行插入。只关注主键对应记录是不存在,无则添加,有则忽略。 案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: INSERT IGNORE INTO table_name (e...
摘要:几种锁定机制类型各存储引擎使用了三种类型级别的锁定机制行级锁定,页级锁定和表级锁定。 前言 数据库锁定机制简单来说就是数据库为了保证数据的一致性而使各种共享资源在被并发访问访问变得有序所设计的一种规则;对于任何一种数据库来说都需要有相应的锁定机制,Mysql也不例外。 Mysql几种锁定机制类型 MySQL 各存储引擎使用了三种类型(级别)的锁定机制:行级锁定,页级锁定和表级锁定。 1...
摘要:数据库表中数据行去重复起因我在创建唯一索引时,提示有重复数据,创建失败。处理方式再说说数据列去重复吧故意插入一些列重复的数据查找表中字段和字段相同的数据执行结果重复记录的都已经找出来了,删除就参考上述方式处理了。 数据库表中数据行去重复 0.起因我在创建唯一索引时,提示有重复数据,创建失败。于是,我得先去重,然后再创建唯一索引。 1.建表 CREATE TABLE `demo_tabl...
阅读 591·2021-11-24 09:39
阅读 1443·2021-11-19 09:40
阅读 2401·2021-10-09 09:44
阅读 2748·2021-09-24 10:27
阅读 3079·2021-09-02 15:15
阅读 1694·2019-08-30 15:54
阅读 966·2019-08-30 15:54
阅读 1229·2019-08-30 13:12