update dbo.tblMessages
set messageFlags = (messageFlags + 1)
where messageId = @messageId
Run Code Online (Sandbox Code Playgroud)
这就是我的proc中的更新。我希望能够在更新后删除该记录,如果更新后该记录messageFlags变为'10'。
我该怎么做?
将< 10条件添加到UPDATE的WHERE中。如果您想在10点时删除,那么您说的是“现在是9点?”
-- DECLARE @rc int
update dbo.tblMessages
set
messageFlags = (messageFlags + 1)
where messageId = @messageId and messageId < 10
/*
or assign SET @rc = @@ROWCOUNT to do more stuff first
*/
IF @@ROWCOUNT = 0
DELETE dbo.tblMessages WHERE messageId = @messageId
Run Code Online (Sandbox Code Playgroud)
或使用UPDATE的分配功能。类似于OUTPUT子句
DECLARE @newvalue int
BEGIN TRANSACTIOn
update dbo.tblMessages
set
@newvalue = messageFlags = (messageFlags + 1)
where messageId = @messageId
IF @newvalue = 10
DELETE dbo.tblMessages WHERE messageId = @messageId
COMMIT TRAN
Run Code Online (Sandbox Code Playgroud)
归结为一个问题:在删除之前,您是否需要将值首先实际设置为 10?