SQL Server主键约束仍然插入重复项

时间:2015-10-06 13:29:58

标签: sql-server duplicates constraints

目前正致力于大规模数据项目,每秒约有1.5-2笔交易。

我得到的问题是,重复项被写入sql server 2012 db表,从不同的实时组件到DB,即使有主键约束。我假设有更多请求正在尝试写入数据库在同一时间。问题是,即使在几个表上存在主键约束,仍然会在表中插入重复项。我认为触发器在完全相同的时间内由两个请求调用,并检查该行是否存在(在完全相同的时间 - 没有任何时候)并且写入相同的两次。

你知道这是否可能,或者是否有任何其他原因可能导致这种情况发生?

谢谢, 米哈伊

1 个答案:

答案 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语句并提交该事务并在此之后启动新事务。

相关问题