如何由两个用户在相同记录上同时更新Sql Server中的记录 [英] How to update a Records in Sql Server at same time on the same records by two user

查看:122
本文介绍了如何由两个用户在相同记录上同时更新Sql Server中的记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何由两个用户在同一条记录上同时更新Sql Server中的一条记录?

How to update a Records in Sql Server at same time on the same records by two user ?

推荐答案

最佳实践是Transaction.

因此,请使用事务.

检查一下:

创建过程InsertRecords
(
@ parameter1 varchar(50),
@ parameter2 varchar(50),
.
.

@parametern varchar(50)
)
AS
开始

开始交易
开始尝试
插入[表名]
(Field1,Field2,...... Fieldn)

(@ parameter1,@ parameter2,...... @ parametern)

提交交易
结束尝试
开始捕捉
回滚交易
选择ERROR_NUMBER()AS错误编号,ERROR_MESSAGE()AS错误消息
结束观看
END


如果两个用户请求中的任何一个失败,它将回滚并要求用户重新提交他/她的请求.


希望对您有所帮助.
The best practice is Transaction.

So use transaction.

Check this out:

CREATE PROCEDURE InsertRecords
(
@parameter1 varchar (50),
@parameter2 varchar (50),
.
.

@parametern varchar(50)
)
AS
BEGIN

BEGIN TRANSACTION
BEGIN TRY
INSERT INTO [tablename]
(Field1,Field2,......Fieldn)
VALUES
(@parameter1,@parameter2,......@parametern)

COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
SELECT ERROR_NUMBER() AS ErrorNumber,ERROR_MESSAGE() AS ErrorMessage
END CATCH
END


If any of the two users request fails, it will roll back and ask the user to resubmit his/her request.


Hope this helps.


简短的答案是您不能做到的.

如果两个用户/进程尝试同时更新同一数据,则会发生死锁,这种情况发生时,将选择其中一个进程作为受害者,并且将失败.您需要做的就是捕获此错误(错误代码1205),然后再次重试该命令.
Short answer is you can''t.

If two users/processes try to update the same data at the same time a deadlock will occur, when this happens one of the processes will be chosen as the victim and will fail. What you need to do is catch this error (error code 1205) and retry the command again.


您可以使用多个更新查询..



就像



第一次更新查询

由;(分号)分隔


第二次更新查询
you can use multiple update queries..



like



first update query

seperated by ;(semicolon)


second update query


这篇关于如何由两个用户在相同记录上同时更新Sql Server中的记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆