update dbo.tblMessages
set messageFlags = (messageFlags + 1)
where messageId = @messageId
这就是我的proc中的更新。我希望能够在更新后删除记录,IF messageFlags
在更新后变为“10”。
我该怎么做?
答案 0 :(得分:4)
将< 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
或使用UPDATE的assign功能。与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
问题在于:在删除之前,您是否需要首先 10的值?
答案 1 :(得分:0)
在你的proc中,你可以让它检查messageFlags值。如果它将是10(即在插入发生之前)然后删除它,或者如果你想要它在更新发生后删除它(在检查之后)。
当值变为10时,您还可以使用更新触发器将其删除。
答案 2 :(得分:-1)