Update or Insert (ХП)

TehnicSan
Дата: 14.01.2009 18:26:12
Необходими из одной таблицы в другую перенести данные. Причём в таблице назначения некоторые данные могут присутствовать, т.е. часть данных мне нужно добавить Insert-ом, а часть обновить Update-ом.

Как это реализовать?
Glory
Дата: 14.01.2009 18:27:55
Сначала сделать UPDATE. А потом INSERT. Или наоборот
alexeyvg
Дата: 14.01.2009 18:32:46
Glory
Сначала сделать UPDATE. А потом INSERT. Или наоборот
Ещё есть команда MERGE :-)
TehnicSan
Дата: 14.01.2009 18:33:16
Как определить что данные уже существуют/отсутствуют.

Буду признателен если поможете примером.
locky
Дата: 14.01.2009 18:40:57
TehnicSan
Как определить что данные уже существуют/отсутствуют.
Буду признателен если поможете примером.

exists/not exists.
BOL в помощь.
alexeyvg
Дата: 14.01.2009 18:42:12
TehnicSan
Как определить что данные уже существуют/отсутствуют.

Буду признателен если поможете примером.

IF NOT EXISTS(...)
INSERT ...
SELECT ...
или
INSERT ...
SELECT ...
WHERE NOT EXISTS(...)
RADDD
Дата: 14.01.2009 20:20:22
UPDATE t1
SET t1.f1 = t2.f1
FROM t1 INNER JOIN t2 
  ON t1.keyf = t2.keyf

INSERT INTO t1
SELECT t2.*
FROM t1 LEFT OUTER JOIN t2 
  ON t1.keyf = t2.keyf
WHERE t1.keyf IS NULL
RADDD
Дата: 14.01.2009 20:21:45
сори
UPDATE t1
SET t1.f1 = t2.f1
FROM t1 INNER JOIN t2 
  ON t1.keyf = t2.keyf

INSERT INTO t1
SELECT t2.*
FROM t1 RIGHT OUTER JOIN t2 
  ON t1.keyf = t2.keyf
WHERE t1.keyf IS NULL
syslink
Дата: 15.01.2009 00:41:49
alexeyvg
TehnicSan
Как определить что данные уже существуют/отсутствуют.

Буду признателен если поможете примером.

IF NOT EXISTS(...)
INSERT ...
SELECT ...
или
INSERT ...
SELECT ...
WHERE NOT EXISTS(...)


если я правильно понял, это подходит только для одиночных записей?
syslink
Дата: 15.01.2009 00:49:41
RADDD
сори
UPDATE t1
SET t1.f1 = t2.f1
FROM t1 INNER JOIN t2 
  ON t1.keyf = t2.keyf

INSERT INTO t1
SELECT t2.*
FROM t1 RIGHT OUTER JOIN t2 
  ON t1.keyf = t2.keyf
WHERE t1.keyf IS NULL


OK. Спасибо RADDD, я думаю это как раз то что мне нужно! (буду курить RIGHT OUTER JOIN)

И MERGE как вариант тоже не плох, но у него ограничение на размещение target таблицы, она не может находится на удалённом сервере (поправте если не так).