Вы можете использовать следующее:
mydiv.style.display === 'block' = (mydiv.style.display === 'block' ? 'none' : 'block');
Что-то вроде этого
--Grab the next message id
begin tran
declare @MessageId uniqueidentifier
select top 1 @MessageId = ActionMessageId from UnacknowledgedDemands with(holdlock, updlock);
--Acknowledge the message
update ActionMessages
set AcknowledgedTime = getdate()
where ActionMessageId = @MessageId
-- some error checking
commit tran
--Select the entire message
...
...
@Kilhoffer:
целый пакет SQL анализируется перед выполнением, таким образом, SQL знает, что Вы собираетесь сделать обновление таблицы, а также выбора из нее.
Редактирование: Кроме того, SQL не обязательно заблокирует целую таблицу - это могло просто заблокировать необходимые строки. См. здесь для обзора привязки SQL-сервера.
Вместо явной блокировки, которая часто наращивается SQL Server к более высокой гранулярности, чем желаемый, почему не только пробуют этот подход:
declare @MessageId uniqueidentifier
select top 1 @MessageId = ActionMessageId from UnacknowledgedDemands
update ActionMessages
set AcknowledgedTime = getdate()
where ActionMessageId = @MessageId and AcknowledgedTime is null
if @@rowcount > 0
/* acknoweldge succeeded */
else
/* concurrent query acknowledged message before us,
go back and try another one */
, Чем меньше Вы блокируете - тем более высокий параллелизм Вы имеете.
Необходимо ли действительно обрабатывать вещи один за другим? У Вас не должно только быть SQL Server, подтверждают все неподтвержденные сообщения с сегодняшней датой и возвращают их? (все также в транзакции, конечно)
Считайте больше о Выборе SQL Server Блокировку здесь и здесь . SQL Server имеет способность вызвать блокировку таблицы на выбор. Ничего не произойдет с таблицей во время транзакции. Когда транзакция завершается, любой вставляет, или обновления тогда разрешат себя.
Вы хотите обернуть свой код в транзакцию, тогда SQL-сервер обработает блокировку соответствующих строк или таблиц.
begin transaction
--Grab the next message id
declare @MessageId uniqueidentifier
set @MessageId = (select top(1) ActionMessageId from UnacknowledgedDemands);
--Acknowledge the message
update ActionMessages
set AcknowledgedTime = getdate()
where ActionMessageId = @MessageId
commit transaction
--Select the entire message
...