Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 select-update  [new]
Edgar
Member

Откуда: Лондон
Сообщений: 434
Простенькая задачка :)
Таблица (чат) постоянно пополняется записями со статусом 0.
Читающая сторона делает выборку записей со статусом 0 и немедленно проставляет статус 1, чтобы снова не читать прочитанное.

В процедуре:
create procedure get_message
begin
select * from msg where status = 0 
update msg set status = 1 where status = 0
end

Есть опасения, что перед тем как произойдет update могут быть вставленны еще записи, которые не были "прочитаны" ранее в select-e.
6 окт 11, 09:58    [11392723]     Ответить | Цитировать Сообщить модератору
 Re: select-update  [new]
Glory
Member

Откуда:
Сообщений: 104751
UPDATE + OUTPUT
6 окт 11, 10:10    [11392814]     Ответить | Цитировать Сообщить модератору
 Re: select-update  [new]
Edgar
Member

Откуда: Лондон
Сообщений: 434
не совсем понятно.... можно поподробнее? Может ссылочку?
6 окт 11, 10:15    [11392845]     Ответить | Цитировать Сообщить модератору
 Re: select-update  [new]
Glory
Member

Откуда:
Сообщений: 104751
Edgar
не совсем понятно.... можно поподробнее? Может ссылочку?

Откройте хелп по команде UPDATE
Найдите в ее синтаксисе фразу OUTPUT
Изучите ниже примеры ее использования
6 окт 11, 10:17    [11392855]     Ответить | Цитировать Сообщить модератору
 Re: select-update  [new]
Aleksey V.P.
Member

Откуда: Москва
Сообщений: 575
Edgar,

Загрузи все прочитанные записи во времянку, затем сделай update по тем ID, что загрузил, потом выдай результат из времянки.
6 окт 11, 10:18    [11392858]     Ответить | Цитировать Сообщить модератору
 Re: select-update  [new]
iap
Member

Откуда: Москва
Сообщений: 47157
Edgar
не совсем понятно.... можно поподробнее? Может ссылочку?
http://msdn.microsoft.com/ru-ru/library/ms177523(v=SQL.100).aspx
6 окт 11, 10:18    [11392862]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить