Удалить запись sql с оператором if - PullRequest
1 голос
/ 09 апреля 2011
update dbo.tblMessages
set messageFlags = (messageFlags + 1)
where messageId = @messageId

Так что это обновление в моей процедуре.Я хочу иметь возможность удалить запись ПОСЛЕ обновления, ЕСЛИ messageFlags станет '10' после ее обновления.

Как бы я это сделал?

Ответы [ 3 ]

4 голосов
/ 09 апреля 2011

Добавьте условие < 10 ГДЕ ОБНОВЛЕНИЯ. Если вы хотите удалить, когда 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. Аналогично предложению 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, прежде чем удалять?

0 голосов
/ 09 апреля 2011

вы рассматривали CASE? http://www.tizag.com/sqlTutorial/sqlcase.php

0 голосов
/ 09 апреля 2011

В вашем proc вы можете либо проверить его на значение messageFlags.Если оно будет равно 10 (т. Е. До вставки), удалите его или, если хотите, чтобы после обновления произошло, удалите его (после проверки).

Вы также можете использовать триггер обновления, чтобы удалить егокогда значение становится 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...