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

Откуда:
Сообщений: 5
Добрый день!
Делаю select:

select t1.ItemId, t2.ItemId, t1.[physicalInvent], t3.Qty
from dbo.#webinventsum t1
inner join [WEB-SQL].[Test2].[dbo].[InventTable] t2
on t1.ItemId = t2.OrigItemId
inner join [WEB-SQL].[Test2].[dbo].[RegionPrice] t3
on t3.StateId = t1.State and
t3.ItemId = t2.ItemId

Выбирается 14 записей.

Делаю update

update t3 set t3.[Qty] = t1.[physicalInvent]
from dbo.#webinventsum t1
inner join [WEB-SQL].[Test2].[dbo].[InventTable] t2
on t1.ItemId = t2.OrigItemId
inner join [WEB-SQL].[Test2].[dbo].[RegionPrice] t3
on t3.StateId = t1.State and
t3.ItemId = t2.ItemId

Обновляется почти миллион - одним значением - 3 (это последнее значение physicalInvent из 14-ти)

В чем ошибка?
8 сен 09, 11:34    [7630472]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
i2akai1
Member

Откуда: Петербург
Сообщений: 217
DreamCreator,

t3 это таблица или алиас?
в общем-то в БОЛ все есть :) (update t-sql reference)
8 сен 09, 11:40    [7630510]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
вероятно, в таблице #webinventsum данные отличаются
в момент select
и в момент update

(я, кстати, не знаю, может это вообще разные таблицы)
8 сен 09, 11:40    [7630517]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
Glory
Member

Откуда:
Сообщений: 104760
update t3 set [Qty] = t1.[physicalInvent]
from [WEB-SQL].[Test2].[dbo].[RegionPrice] t3
inner join #webinventsum t1 on t3.StateId = t1.State
inner join [WEB-SQL].[Test2].[dbo].[InventTable] t2 on t1.ItemId = t2.OrigItemId and t3.ItemId = t2.ItemId
8 сен 09, 11:41    [7630526]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

а как проверяли?

Posted via ActualForum NNTP Server 1.4

8 сен 09, 11:41    [7630528]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
DreamCreator
Member

Откуда:
Сообщений: 5
i2akai1
DreamCreator,

t3 это таблица или алиас?
в общем-то в БОЛ все есть :) (update t-sql reference)


t3 это алиас таблицы [WEB-SQL].[Test2].[dbo].[RegionPrice]

Паганель
вероятно, в таблице #webinventsum данные отличаются
в момент select
и в момент update

(я, кстати, не знаю, может это вообще разные таблицы)


Это один и та же временная таблица, один и тот же запрос
единственно я в нем меняю верхнюю строчку :

или
update t3 set t3.[Qty] = t1.[physicalInvent]

или
select t1.ItemId, t2.ItemId, t1.[physicalInvent], t3.Qty
8 сен 09, 11:43    [7630545]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Приведите в текстовом виде планы обоих запросов.
8 сен 09, 11:46    [7630565]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
i2akai1
Member

Откуда: Петербург
Сообщений: 217
DreamCreator,

ясно, не знал что можно апдейтить по алиасу, у меня 2000 а у вас наверное какой нибудь новый сервер
8 сен 09, 11:50    [7630604]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
i2akai1,

В 2000 тоже можно.
8 сен 09, 11:51    [7630617]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
Glory
Member

Откуда:
Сообщений: 104760
i2akai1
DreamCreator,

ясно, не знал что можно апдейтить по алиасу, у меня 2000 а у вас наверное какой нибудь новый сервер

И в 2000ом тоже можно
8 сен 09, 11:52    [7630626]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
i2akai1
Member

Откуда: Петербург
Сообщений: 217
pkarklin, Glory,

действительно, а я парюсь уже несколько лет :)
хотя в БОЛ написано:
UPDATE 
        { 
         table_name WITH ( < table_hint_limited > [ ...n ] ) 
         | view_name 
         | rowset_function_limited 
        } 
        SET ....
8 сен 09, 12:03    [7630696]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
i2akai1
Member

Откуда: Петербург
Сообщений: 217
i2akai1,

сорри за оффтоп
8 сен 09, 12:03    [7630699]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
DreamCreator
Member

Откуда:
Сообщений: 5
Glory
update t3 set [Qty] = t1.[physicalInvent]
from [WEB-SQL].[Test2].[dbo].[RegionPrice] t3
inner join #webinventsum t1 on t3.StateId = t1.State
inner join [WEB-SQL].[Test2].[dbo].[InventTable] t2 on t1.ItemId = t2.OrigItemId and t3.ItemId = t2.ItemId


Так же..
(9374092 row(s) affected)

daw
а как проверяли?


Запускал два запроса, смотрел кол-во обработанных записей.

pkarklin
Приведите в текстовом виде планы обоих запросов.


select:

  |--Nested Loops(Inner Join, OUTER REFERENCES:([t1].[State], [t1].[ItemId]))
       |--Clustered Index Scan(OBJECT:([tempdb].[dbo].[#webInventSum_______________________________________________________________________________________________________000000BED23C].[PK_webstateitemid2] AS [t1]))
       |--Remote Query(SOURCE:(WEB-SQL), QUERY:(SELECT Col1105,Col1100 FROM (SELECT t3."ITEMID" Col1099,t3."STATEID" Col1098,t3."QTY" Col1100,t3."DATAAREAID" Col1101 FROM "DOMO_Test2"."dbo"."RegionPrice" t3 WHERE t3."STATEID"=?) Qry1102,(SELECT t2."ORIGITE4
update:
|--Nested Loops(Inner Join, OUTER REFERENCES:([t1].[ItemId], [t1].[State], [t1].[physicalInvent]))
       |--Clustered Index Scan(OBJECT:([tempdb].[dbo].[#webInventSum_______________________________________________________________________________________________________000000BED23C].[PK_webstateitemid2] AS [t1]))
       |--Remote Query(SOURCE:(WEB-SQL), QUERY:(UPDATE "Test2"."dbo"."RegionPrice" SET QTY = ? FROM (SELECT t3."ITEMID" Col1025,t3."STATEID" Col1024,t3."PRICE" Col1026,t3."RETAILPRICE" Col1027,t3."BUSINESSID" Col1028,t3."PUBLICITYPRICE" Col1029,t3."QT


Сообщение было отредактировано: 8 сен 09, 12:22
8 сен 09, 12:14    [7630770]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
PaulYoung
Member

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

триггеров на таблице нет?
8 сен 09, 12:25    [7630860]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
Glory
Member

Откуда:
Сообщений: 104760
update t3 set [Qty] = t1.[physicalInvent]
from [WEB-SQL].[Test2].[dbo].[RegionPrice] t3
inner remote join #webinventsum t1 on t3.StateId = t1.State
inner remote join [WEB-SQL].[Test2].[dbo].[InventTable] t2 on t1.ItemId = t2.OrigItemId and t3.ItemId = t2.ItemId
8 сен 09, 12:27    [7630879]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
DreamCreator
Member

Откуда:
Сообщений: 5
PaulYoung
DreamCreator,

триггеров на таблице нет?


нет, в хранимой процедуре эта таблица создается так:
IF object_id('tempdb.dbo.#webInventSum') > 0
drop table dbo.#webInventSum

-----------------------------------------------------------------------
CREATE TABLE dbo.#webInventSum (
	[State] [varchar] (10) COLLATE Cyrillic_General_CI_AS NOT NULL ,
	[ItemId] [varchar] (10) COLLATE Cyrillic_General_CI_AS NOT NULL,
	[physicalInvent] [numeric](28, 12) NOT NULL
)

ALTER TABLE dbo.#webinventsum WITH NOCHECK ADD 
	CONSTRAINT [PK_webstateitemid2] PRIMARY KEY  CLUSTERED 
	(
		[State],
		[ItemId]
	)
8 сен 09, 12:31    [7630899]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Конечно же, это триггер на UPDATE выдаёт сообщение (9374092 row(s) affected).
Почти уверен в этом
8 сен 09, 12:31    [7630905]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
i2akai1
Member

Откуда: Петербург
Сообщений: 217
DreamCreator,

он имел ввиду триггеров на [WEB-SQL].[Test2].[dbo].[RegionPrice], я думаю
8 сен 09, 12:32    [7630907]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
DreamCreator
CREATE TABLE dbo.#webInventSum (
	[State] [varchar] (10) COLLATE Cyrillic_General_CI_AS NOT NULL ,
	[ItemId] [varchar] (10) COLLATE Cyrillic_General_CI_AS NOT NULL,
	[physicalInvent] [numeric](28, 12) NOT NULL
)
Да, у временной таблицы триггеров быть не может...
Но и давать имя PRIMARY KEY тоже не следует!
8 сен 09, 12:34    [7630928]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
Glory
Member

Откуда:
Сообщений: 104760
iap
Конечно же, это триггер на UPDATE выдаёт сообщение (9374092 row(s) affected).
Почти уверен в этом

Тогда должно было бы быть два сообщение о количестве обработанных данных - от самого апдейта и от триггера
8 сен 09, 12:36    [7630946]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2549
Glory
iap
Конечно же, это триггер на UPDATE выдаёт сообщение (9374092 row(s) affected).
Почти уверен в этом

Тогда должно было бы быть два сообщение о количестве обработанных данных - от самого апдейта и от триггера
может так и есть, автор картинку не показывал...
8 сен 09, 12:38    [7630965]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
А может, тут вообще экзотика - FOREIGN KEYs с каскадным UPDATEом!
8 сен 09, 12:46    [7631037]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
Glory
Member

Откуда:
Сообщений: 104760
iap
А может, тут вообще экзотика - FOREIGN KEYs с каскадным UPDATEом!

Каскадные обновления разве сообщают о количестве обработанных записей ?
8 сен 09, 12:48    [7631056]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Да, увидеть бы полный текст Remote Query в UPDATE...
8 сен 09, 12:49    [7631068]     Ответить | Цитировать Сообщить модератору
 Re: Отличия select и update  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Glory
iap
А может, тут вообще экзотика - FOREIGN KEYs с каскадным UPDATEом!

Каскадные обновления разве сообщают о количестве обработанных записей ?
Чего-то я не попробовал...
Сейчас узнаем...
8 сен 09, 12:50    [7631080]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить