目前正致力于大规模数据项目,每秒约有1.5-2笔交易。
我得到的问题是,重复项被写入sql server 2012 db表,从不同的实时组件到DB,即使有主键约束。我假设有更多请求正在尝试写入数据库在同一时间。问题是,即使在几个表上存在主键约束,仍然会在表中插入重复项。我认为触发器在完全相同的时间内由两个请求调用,并检查该行是否存在(在完全相同的时间 - 没有任何时候)并且写入相同的两次。
你知道这是否可能,或者是否有任何其他原因可能导致这种情况发生?
谢谢, 米哈伊
答案 0 :(得分:0)
您应该在sql server中实现事务。这将正确处理并行插入并行插入请求。
以下是如何在sql server中实现事务:
BEGIN TRY
BEGIN TRANSACTION
-- Your insert statement.
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH
因此,当你的第一个插入语句运行并且sql server获得另一个插入请求时,它将等待直到它完成第一个insert语句并提交该事务并在此之后启动新事务。