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

Откуда:
Сообщений: 47
есть таблица Table(<id>,<date>,<data>), где первичный ключ состоит из двух первых столбцов...
каждый день в таблицу добавляются данные.
добовляется обычно данные за текущий день. и в общем то если бы только так и было то вопроса бы не возникло.
но вот у меня задача обновить данные используя исторические данные. и при вставке этого массива естесвенно вылетает ошибка о дублировании первичного ключа.
в mysql есть такая штука как on dublicate key update... но в mssql такого не нашёл... ка кможно вставлять данные и обновить их, если уникальные ключи совпадают???
9 окт 09, 15:35    [7765740]     Ответить | Цитировать Сообщить модератору
 Re: insert on dublicate key  [new]
Glory
Member

Откуда:
Сообщений: 104760
SQL2008 - MERGE, в предыдущих версиях INSERT/UPDATE с подзапросом на проверку наличия записи
9 окт 09, 15:37    [7765757]     Ответить | Цитировать Сообщить модератору
 Re: insert on dublicate key  [new]
aliczar
Member

Откуда:
Сообщений: 47
2008 не катит, стоит версия 2005...

то есть если я правильно понял, то надо делать update с проверкой на наличие???
9 окт 09, 16:00    [7765945]     Ответить | Цитировать Сообщить модератору
 Re: insert on dublicate key  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31194
aliczar
2008 не катит, стоит версия 2005...

то есть если я правильно понял, то надо делать update с проверкой на наличие???
Нет, insert с проверкой на наличие.
9 окт 09, 16:10    [7766029]     Ответить | Цитировать Сообщить модератору
 Re: insert on dublicate key  [new]
aliczar
Member

Откуда:
Сообщений: 47
хм, нашёл пример
IF NOT EXISTS (SELECT * FROM mytbl WHERE columnName = 'aaa')
INSERT INTO mytbl clumnName VALUES 'aaa'
но этопроверка одной строки,а если у меня идёт вставка таким образом
INSERT INTO tbl 
SELECT col1,col2 FROM tbl2
то как тут то сделать проверку?
9 окт 09, 16:24    [7766134]     Ответить | Цитировать Сообщить модератору
 Re: insert on dublicate key  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
aliczar
хм, нашёл пример
IF NOT EXISTS (SELECT * FROM mytbl WHERE columnName = 'aaa')
INSERT INTO mytbl clumnName VALUES 'aaa'
но этопроверка одной строки,а если у меня идёт вставка таким образом
INSERT INTO tbl 
SELECT col1,col2 FROM tbl2
WHERE NOT EXISTS(SELECT * FROM ... WHERE ...)
то как тут то сделать проверку?
9 окт 09, 16:38    [7766222]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить