使用if语句删除SQL记录

Sco*_*ott 2 t-sql

update dbo.tblMessages
set messageFlags = (messageFlags + 1)
where messageId = @messageId
Run Code Online (Sandbox Code Playgroud)

这就是我的proc中的更新。我希望能够在更新后删除该记录,如果更新后该记录messageFlags变为'10'。

我该怎么做?

gbn*_*gbn 5

< 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?