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

Откуда: Кишинёв
Сообщений: 6724
Очередная статья в воздух. :)

Представьте что можно писать как-то так:
UPDATE	Alias
SET	 Column1	= <Expression1>
	,Column2	= <Expression2>	IF (@Param = 2)
	,Column3	= <Expression3>	IF (<Unbound Condition>)
	,ColumnN	= <ExpressionN>
Имеется ли в этом вообще какой-то практический смысл?

Планы запросов итак уже множественные (выбирается подходящий), а тут план слабо меняется (ширина "канала" может быть).
Есть конечно затык: Expression может содержать таблицы (аля Exists и т.п.). Можно ограничить или ладно пусть зря вычисляет без применения.
2 июн 11, 21:15    [10755762]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE, динамический SET  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Mnior
UPDATE	Alias
SET	 Column1	= <Expression1>
	,Column2	= <Expression2>	IF (@Param = 2)
	,Column3	= <Expression3>	IF (<Unbound Condition>)
	,Column4	= <Expression4>	IF Updated(Clmn4)
	,ColumnN	= <ExpressionN>
2 июн 11, 21:18    [10755778]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE, динамический SET  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Up
6 июн 11, 10:59    [10767957]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE, динамический SET  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Mnior,

немогу представить ,что можно писать так.

Однако. Я в потере ибо
автор
Имеется ли в этом вообще какой-то практический смысл?


нет - не реализован сей синтаксис.

автор
Expression может содержать таблицы (аля Exists и т.п.).

перечисления и т.д

угу. и так если представить уровен чуть выше и это будет LINQ...

Вопрос то в чём ?
В планах (persisted)? - выбор планов для запросов задаёт бизнес ))) . Где-то - производительность, а где-то отчёт с перекурами.
6 июн 11, 11:13    [10768108]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE, динамический SET  [new]
Jaffar
Member

Откуда:
Сообщений: 633
если шибко нужна производиельность - то разбей запрос на 2 части
1. постоение динамического запроса со всеми выкрутасами чтобы на выходе получился

update table set col = 123 where ID in (1, 2, 4)...

2. выполни этот динамический запрос.

и все будет быстро и без лишних тактов
6 июн 11, 11:17    [10768143]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE, динамический SET  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Вопрос о расширении синтаксиса ради решения практических задач.
Mnior
Представьте что можно писать как-то так:
Выделяю один из вариантов:
Mnior
UPDATE	Alias
SET	 Column1	= <Expression1>
	,Column2	= <Expression2>	IF (@Param = 2)
	,Column3	= <Expression3>	IF (<Unbound Condition>)
	,Column4	= <Expression4>	IF Updated(Clmn4)
	,ColumnN	= <ExpressionN>
Может быть экономия на спичках?

Jaffar
если шибко нужна производиельность - то разбей запрос на 2 части
Это как можно увеличить производительность записав вместо одного запроса два.

Jaffar
2. выполни этот динамический запрос.
Динамика зло, не говоря о том, что многое там просто недоступно (к примеру Inserted, Deleted).
Ох чувствую будут предложения типа промежуточных таблиц :)
6 июн 11, 11:51    [10768495]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE, динамический SET  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Up
7 июн 11, 11:05    [10775096]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE, динамический SET  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Ну, а чем CASE не катит?
7 июн 11, 11:11    [10775154]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE, динамический SET  [new]
step_ks
Member

Откуда:
Сообщений: 936
может тем, что надо своим же значением апдейтить в else?
7 июн 11, 11:15    [10775198]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE, динамический SET  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
Начиная с 2005, апдейт поля тем же значением не попадает в журнал транзакций, так что даже по поводу места можно больше не беспокоиться.

Триггеры, правда, все равно срабатывают, но в них это тоже можно обойти.
7 июн 11, 11:40    [10775444]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить