11
回答
SQLSERVER重复插入数据
华为云4核8G,高性能云服务器,免费试用   
数据库是SQLSERVER2008版的,使用事务在存储过程中存放数据,使用了一年时间,发现有两笔数据重复插入了。因为在插入数据前会进行逻辑检查,所以重复插入数据应该是不可能发生的。但是现在发现的两笔数据是在很短的时间里同时插入的,比如,第一笔数据插入时间是"2013-05-27 12:45:34:123",第二笔数据是" 2013-05-27 12:45:34:236"。不知这是什么情况?
<无标签>
举报

以下是问题补充:

  • @李察德-泰森 :修改下问题的描述:因为实际业务数据的需要,所以实际上不只是这一个表的数据插入,还有另外的表的数据更新和插入。另外这个重复的数据里实际是记录的流水帐,这个流水帐的根据是根据另外表的唯一记录来确定的。前面的逻辑检查是对这个唯一表数据的,这个表中的数据可以更新才会插入一笔流水帐,在唯一记录表更新后,这个流水帐不会再插入相同的数据。现在的实际情况是唯一记录的表只更新了一次,流水帐表插入了两次数据。这些数据的更新,插入都是在一个事务中提交的。 (5年前)
共有11个答案 最后回答: 5年前

引用来自“戴威”的答案

缺少重复提交检查。
我说了,是在事务中提交的,提交数据前会有逻辑检查的

引用来自“nowayout”的答案

引用来自“戴威”的答案

缺少重复提交检查。
我说了,是在事务中提交的,提交数据前会有逻辑检查的
程序检查还是数据库检查?

引用来自“戴威”的答案

引用来自“nowayout”的答案

引用来自“戴威”的答案

缺少重复提交检查。
我说了,是在事务中提交的,提交数据前会有逻辑检查的
程序检查还是数据库检查?
数据库检查

引用来自“nowayout”的答案

引用来自“戴威”的答案

引用来自“nowayout”的答案

引用来自“戴威”的答案

缺少重复提交检查。
我说了,是在事务中提交的,提交数据前会有逻辑检查的
程序检查还是数据库检查?
数据库检查
触发器、唯一字段还是别的?

引用来自“戴威”的答案

引用来自“nowayout”的答案

引用来自“戴威”的答案

引用来自“nowayout”的答案

引用来自“戴威”的答案

缺少重复提交检查。
我说了,是在事务中提交的,提交数据前会有逻辑检查的
程序检查还是数据库检查?
数据库检查
触发器、唯一字段还是别的?
在数据库的存储过程中

引用来自“dana.gao”的答案

用select检查?事物没提交?检查时用with (nolock)试试。
是的,查询都使用的nolock,更新使用的行锁,插入不知道是不是也有锁
顶部