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

Откуда: Москва
Сообщений: 2793
Какой из двух вариантов лучше:

CREATE PROCEDURE DBO.GET_NEW_ROWS
AS
UPDATE t SET STATUS = 1 OUTPUT insderted.id, insderted.a  WHERE STATUS=0


или

CREATE PROCEDURE DBO.GET_NEW_ROWS
AS
DECLARE @t TABLE(id INT, a VARCHAR(10))

UPDATE t SET STATUS = 1 OUTPUT insderted.id, insderted.a  INTO @t(id, a) WHERE STATUS=0

SELECT id, a FROM @t


с учетом того, что клиент может медленно принимать данные или возможен разрыв в сети?
14 мар 14, 15:28    [15724834]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть результат update клиенту  [new]
iap
Member

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

во-первых, inserted
во-вторых, если у таблицы есть триггер, то возможен только вариант с табличной переменной.
А если этот триггер - INSTEAD OF INSERT, то ни один из этих способов не поможет!
14 мар 14, 15:44    [15725006]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть результат update клиенту  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
тригеров нет
14 мар 14, 15:46    [15725011]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть результат update клиенту  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
iap
А если этот триггер - INSTEAD OF INSERT, то ни один из этих способов не поможет!
Ой!
Это я про IDENTITY почему-то подумал
14 мар 14, 15:46    [15725018]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть результат update клиенту  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8828
Если разрывы, то подумайте об асинхронном обмене данными. Т.е. кладите результат в таблицу, а потом считывайте клиентом.
14 мар 14, 16:39    [15725571]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть результат update клиенту  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
Prolog
Какой из двух вариантов лучше:
с учетом того, что клиент может медленно принимать данные или возможен разрыв в сети?
Второй, конечно, ведь первом вы растягиваете лок таблицы на время передачи данных.
14 мар 14, 18:52    [15726441]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить