我有一個表,用於保存用戶操作的計數。每次行動完成後,該值都需要增加。由於用戶可以同時擁有多個會話,因此該過程需要是原子級的,以避免多用戶問題。SQL Server:添加行如果不存在,增加一列的值,原子
表有3列:
ActionCode
爲varchar
UserID
爲int
Count
爲int
我想通過ActionCode
和UserID
到將增加一個功能一個新的行如果還不存在,並將計數設置爲1.如果該行存在,則只會將計數增加1。 ActionCode
和UserID
構成了此表的主要唯一索引。
如果所有我需要做的是更新的,我可以做一些簡單的像這樣的(因爲UPDATE
查詢是原子的話):
UPDATE (Table)
SET Count = Count + 1
WHERE ActionCode = @ActionCode AND UserID = @UserID
我是新來的SQL原子事務。這個問題可能在這裏有很多部分回答,但我很難找到這些問題,並將這些部分放在一個解決方案中。這需要非常快速,而且不會變得複雜,因爲這些操作可能會頻繁發生。
編輯:對不起,這可能是一個騙局MySQL how to do an if exist increment in a single query。我搜索了很多,但在我的搜索中有tsql
,一旦我改爲sql
,那就是最好的結果。這是不明顯的,如果這是原子,但很確定它會。我可能會投票刪除這個作爲愚蠢的,除非有人認爲這個問題和答案可以增加一些新的價值。
您能否澄清一下您正在使用的RDBMS? –
在頂部添加了編輯,MS SQL Server 2008. – eselk
謝謝。包含「sql-server」和/或「sql-server-2008」標籤通常會有所幫助。 –