关于数据库重复插入数据问题

风2013 2015-11-23 12:30:12
代码写法如下:

执行时由事务控制,肯定是不会同时执行的,以下为我代码事务未提交之前查询分析器执行结果:

但是我目前数据库出现了一模一样的数据


请问各位大神,这种写法是否有其他缺陷,是在什么巧合下才能出现这种情况
...全文
460 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yole 2015-11-23
  • 打赏
  • 举报
回复
那可能是有人同时操作了。
风2013 2015-11-23
  • 打赏
  • 举报
回复
引用 1 楼 u010192842 的回复:
看下程序是不是写了2次 或者该表是否有触发器,又执行了一次。
没有触发,这个现象一年都难得出现两次,最近才发现一次
Yole 2015-11-23
  • 打赏
  • 举报
回复
看下程序是不是写了2次 或者该表是否有触发器,又执行了一次。
misterliwei 2015-11-23
  • 打赏
  • 举报
回复
引用 14 楼 feng1366259807 的回复:
首先感谢各位的回答,问题可能找到,这种数据来源是从APP来的,可能是我app的应用没有更新导致的
要是有其他问题,欢迎继续讨论。
Yole 2015-11-23
  • 打赏
  • 举报
回复
风2013 2015-11-23
  • 打赏
  • 举报
回复
首先感谢各位的回答,问题可能找到,这种数据来源是从APP来的,可能是我app的应用没有更新导致的
风2013 2015-11-23
  • 打赏
  • 举报
回复
引用 12 楼 misterliwei 的回复:
你事务隔离级别是什么? 防止插入重复值最好还是使用唯一索引。
锁行
misterliwei 2015-11-23
  • 打赏
  • 举报
回复
你事务隔离级别是什么? 防止插入重复值最好还是使用唯一索引。
风2013 2015-11-23
  • 打赏
  • 举报
回复
引用 10 楼 misterliwei 的回复:
[quote=引用 8 楼 feng1366259807 的回复:] [quote=引用 6 楼 sz_haitao 的回复:] 判断存在-成功插入 所花的时间 之间,有其它连接 也进行了判断 1、加上事务:判断存在-成功插入 期间严格禁止其它连接进行了判断 2、使用exists判断,会不会快一些?降低出现的概率 3、if ... begin 之后再 先判断存在。降低出现的概率
如图2就是其他的连接连入的,执行不了,一定要等第一个连接完成之后才能执行第二个连接。[/quote] 为什么一定要等第二个连接结束才能执行? [/quote] 代码里面我加了事务锁控制。
haitao 2015-11-23
  • 打赏
  • 举报
回复
引用 8 楼 feng1366259807 的回复:
[quote=引用 6 楼 sz_haitao 的回复:] 判断存在-成功插入 所花的时间 之间,有其它连接 也进行了判断 1、加上事务:判断存在-成功插入 期间严格禁止其它连接进行了判断 2、使用exists判断,会不会快一些?降低出现的概率 3、if ... begin 之后再 先判断存在。降低出现的概率
如图2就是其他的连接连入的,执行不了,一定要等第一个连接完成之后才能执行第二个连接。[/quote] sql里没使用tran?是程序启动事务的?? 如果已经启动事务,按理说不可能重复的。。。。
misterliwei 2015-11-23
  • 打赏
  • 举报
回复
引用 8 楼 feng1366259807 的回复:
[quote=引用 6 楼 sz_haitao 的回复:] 判断存在-成功插入 所花的时间 之间,有其它连接 也进行了判断 1、加上事务:判断存在-成功插入 期间严格禁止其它连接进行了判断 2、使用exists判断,会不会快一些?降低出现的概率 3、if ... begin 之后再 先判断存在。降低出现的概率
如图2就是其他的连接连入的,执行不了,一定要等第一个连接完成之后才能执行第二个连接。[/quote] 为什么一定要等第二个连接结束才能执行?
风2013 2015-11-23
  • 打赏
  • 举报
回复
引用 6 楼 sz_haitao 的回复:
判断存在-成功插入 所花的时间 之间,有其它连接 也进行了判断 1、加上事务:判断存在-成功插入 期间严格禁止其它连接进行了判断 2、使用exists判断,会不会快一些?降低出现的概率 3、if ... begin 之后再 先判断存在。降低出现的概率
如图2就是其他的连接连入的,执行不了,一定要等第一个连接完成之后才能执行第二个连接。
yooq_csdn 2015-11-23
  • 打赏
  • 举报
回复
时间的确很接近
haitao 2015-11-23
  • 打赏
  • 举报
回复
判断存在-成功插入 所花的时间 之间,有其它连接 也进行了判断 1、加上事务:判断存在-成功插入 期间严格禁止其它连接进行了判断 2、使用exists判断,会不会快一些?降低出现的概率 3、if ... begin 之后再 先判断存在。降低出现的概率
Yole 2015-11-23
  • 打赏
  • 举报
回复
偶然事件喽~~~一年要是就一次,那就忍忍吧~~
风2013 2015-11-23
  • 打赏
  • 举报
回复
引用 3 楼 u010192842 的回复:
那可能是有人同时操作了。
同时操作不会有印象的,当第一个请求没有完成之前,我数据表是锁的,请看第二个图,是执行不了的

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧