2013-04-08 7 views
1
CREATE TABLE #TempProducts (
    Id uniqueidentifier, 
    ManufacturerId uniqueidentifier, 
    Number varchar(50), 
    PresentId uniqueidentifier null) 

Как обновить поле PresentId? У меня разные ошибки:Как обновить #temptable

1) В базе данных уже есть объект с именем #TempProducts.

UPDATE #TempProducts 
SET #TempProducts.PresentId = p.Id 
FROM #TempProducts JOIN Products p ON (#TempProducts.ManufacturerId = p.ManufacturerId AND #TempProducts.Number = p.Number) 
WHERE #TempProducts.Id <> p.Id 

2) Идентификатор из нескольких частей "t.PresentId" не может быть связан.

UPDATE #TempProducts 
SET t.PresentId = p.Id 
FROM #TempProducts t JOIN Products p ON (t.ManufacturerId = p.ManufacturerId AND t.Number = p.Number) 
WHERE t.Id <> p.Id 

ответ

2

Для Вторая ошибка, пожалуйста, попробуйте:

UPDATE t 
SET t.PresentId = p.Id 
FROM #TempProducts t JOIN Products p ON (t.ManufacturerId = p.ManufacturerId AND t.Number = p.Number) 
WHERE t.Id <> p.Id 
+0

не мой downvote, но как же это отличается от примера 1? использование tablename вместо псевдонима прекрасно. –

+1

@JW :) все в порядке. Вы получаете 'Идентификатор многочастности" t.PresentId "не может быть привязан. 'Для второго запроса. Хотя я пытался с elias 't', он работал (по крайней мере, ошибка исчезла). – TechDo

+1

Да, вы правы. нужно немного поспать сейчас ~ _ ~ –

1

Для задачи 1: (Перед CREATE TABLE синтаксис)

if object_id(tempdb..#TempProducts) is not null 
begin 
    drop table #TempProducts 
end 

И для задачи 2 я думаю @techdo является правильным.

UPDATE t 
SET t.PresentId = p.Id 
FROM #TempProducts t JOIN Products p 
ON (t.ManufacturerId = p.ManufacturerId AND t.Number = p.Number) 
WHERE t.Id <> p.Id 
1
UPDATE t 
SET t.PresentId = p.Id 
FROM #TempProducts t JOIN Products p ON (t.ManufacturerId = p.ManufacturerId AND t.Number = p.Number) 
WHERE t.Id <> p.Id 

Это было бы исправить для второй ошибки (UPDATE т вместо UPDATE #TempProducts). Тем не менее, первый способ не может вызвать указанную ошибку.

Я предполагаю, что вы снова выполняете свой запрос CREATE TABLE, который вызывает ошибку, поскольку таблица temp уже существует.

Вы должны использовать проверку, как это при создании временных таблиц:

IF (OBJECT_ID('tempdb..#TempProducts') IS NOT NULL) DROP TABLE #TempProducts 
CREATE TABLE #TempProducts (
    Id uniqueidentifier, 
    ManufacturerId uniqueidentifier, 
    Number varchar(50), 
    PresentId uniqueidentifier null) 
Смежные вопросы