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

Откуда:
Сообщений: 68
Доброго времени суток.
Ломаю голову над следующей задачкой

Я разрабатываю приложение, которое в несколько потоков делает инсерты в одну общую таблицу в бд. Рабатоют они в параллеле. Дальше для данных вставленных в каждом потоке мне необходимо сделать UPDATE следующего формата

UPDATE x SET x.Attempt1 = x.New_CODE, x.Attempt2 = x.New_CODE1 FROM (SELECT Attempt1,Attempt2, ROW_NUMBER() OVER (PARTITION BY chain_id order by call_time) AS New_CODE, ROW_NUMBER() OVER (PARTITION BY order_number order by call_time) AS NEW_CODE1 
FROM [DLDDB].[dbo].[result] where  ID BETWEEN 9320889 AND 9320944 AND list_id = 123) x


Можно как-то объеденить это в один запрос , а то при выполнении update из разных потоков выскакивают deadlock

Сообщение было отредактировано: 9 ноя 14, 02:01
9 ноя 14, 01:28    [16817513]     Ответить | Цитировать Сообщить модератору
 Re: Cовмещение insert и ROW_NUMBER  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
А сразу вставить нужные значения не судьба?
9 ноя 14, 02:03    [16817590]     Ответить | Цитировать Сообщить модератору
 Re: Cовмещение insert и ROW_NUMBER  [new]
jeddite
Member

Откуда:
Сообщений: 68
Гавриленко Сергей Алексеевич,

А ROW_number() корректно отработает?
9 ноя 14, 02:08    [16817601]     Ответить | Цитировать Сообщить модератору
 Re: Cовмещение insert и ROW_NUMBER  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
jeddite
Гавриленко Сергей Алексеевич,

А ROW_number() корректно отработает?
Отработает согласно документации.
9 ноя 14, 02:41    [16817642]     Ответить | Цитировать Сообщить модератору
 Re: Cовмещение insert и ROW_NUMBER  [new]
jeddite
Member

Откуда:
Сообщений: 68
Гавриленко Сергей Алексеевич,


Что-то у меня знаний sql - не хватает написать это все одним запросом. Можете помочь? Нужно select вставить в update или как?


Спасибо
9 ноя 14, 02:46    [16817648]     Ответить | Цитировать Сообщить модератору
 Re: Cовмещение insert и ROW_NUMBER  [new]
jeddite
Member

Откуда:
Сообщений: 68
jeddite,

Отпечатался, select в insert вставить)
9 ноя 14, 11:58    [16817887]     Ответить | Цитировать Сообщить модератору
 Re: Cовмещение insert и ROW_NUMBER  [new]
jeddite
Member

Откуда:
Сообщений: 68
Попробовал совместить select и insert получился вот такой запрос

INSERT INTO [result] 
	(list_id,  Attempt_phone)  
VALUES
	(1095, 
	(select ROW_NUMBER() OVER (PARTITION BY chain_id order by call_time)  FROM [result]))


При попытке выполнить получаю следующее сообщение об ошибке

Msg 1046, Level 15, State 1, Line 5
Subqueries are not allowed in this context. Only scalar expressions are allowed.


Что я делаю не так? Подскажите плиз..
9 ноя 14, 13:31    [16818009]     Ответить | Цитировать Сообщить модератору
 Re: Cовмещение insert и ROW_NUMBER  [new]
jeddite
Member

Откуда:
Сообщений: 68
Запрос переписал,

INSERT INTO result 
	(list_id, chain_id,  Attempt_phone)  
 
	(select 1095,1, ROW_NUMBER() OVER (PARTITION BY chain_id order by chain_id)  FROM result)


Выполняться начал, только пишет что 0 ROW affected. как мне записи добавлять?
9 ноя 14, 14:17    [16818090]     Ответить | Цитировать Сообщить модератору
 Re: Cовмещение insert и ROW_NUMBER  [new]
Glory
Member

Откуда:
Сообщений: 104760
jeddite
Выполняться начал, только пишет что 0 ROW affected. как мне записи добавлять?

Сделать так, чтобы ваш запрос
select 1095,1, ROW_NUMBER() OVER (PARTITION BY chain_id order by chain_id) FROM result
вернул хоть сколько нибудь записей
9 ноя 14, 16:44    [16818421]     Ответить | Цитировать Сообщить модератору
 Re: Cовмещение insert и ROW_NUMBER  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8316
jeddite
Ломаю голову над следующей задачкой


Сосредоточьтесь на цели, а не на решении. В данном случае, Вы хотите реализовать нечто, о чем не рассказываете и пытаетесь обсудить способ решения непонятно чего.
9 ноя 14, 17:00    [16818472]     Ответить | Цитировать Сообщить модератору
 Re: Cовмещение insert и ROW_NUMBER  [new]
jeddite
Member

Откуда:
Сообщений: 68
Владислав Колосов,

Почему не рассказываю? нужна какая-то до информация могу сообщить
10 ноя 14, 00:33    [16820103]     Ответить | Цитировать Сообщить модератору
 Re: Cовмещение insert и ROW_NUMBER  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8316
Зачем Вы вообще выполняете такой UPDATE?
10 ноя 14, 11:37    [16821312]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить