Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
ИльдарSR Member Откуда: Сообщений: 466 |
Добрый день. Есть большая бд, хочу сделать архивацию больших таблиц. Можно ли сделтаь через Merge следующую конструкцию MERGE INTO ArchiveOrd ---- Добавляем данные в архивную таблицу USING ( SELECT Id,CreateDate FROM Ordes WHERE DATEDIFF(MONTH,CreateDate,GETDATE()) >= 30 ) O ON (OA.Id = O.Id) WHEN NOT MATCHED BY TARGET THEN INSERT (Id,CreateDate) VALUES (O.Id,O.CreateDate) WHEN NOT MATCHED BY SOURCE THEN DELETE FROM Ordes ---- боевая таблица. Но у меня ругается на полседнюю строку DELETE FROM Ordes ---- боевая таблица. Замысел у меня по крайней мере был следующий, заполняем архивную таблицу по условию FROM Orders WHERE DATEDIFF(MONTH,CreateDate,GETDATE()) >= 30 ) O и удаляем записи из боевой, но не могу понять где у меня ошибка.(( Подскажите, пожалуйста. Заранее спасибо за Ваши ответы. |
12 ноя 13, 15:23 [15115894] Ответить | Цитировать Сообщить модератору |
merge не нужее
Guest |
1. нет 2. вы хоть понимаете, что пытаетесь написать? WHEN NOT MATCHED BY SOURCE - нет в источнике, в вашем случае это SELECT Id,CreateDate FROM Ordes WHERE DATEDIFF(MONTH,CreateDate,GETDATE()) >= 30 THEN DELETE FROM Ordes удалить из источника т.е., переведя на русский, если записей нет в источнике - удалить их из источника инструкция мердж меняет одну таблицу - target. если вам нужно удалить данные из одной таблицы и тут же их вставить в другую, используйте delete + ouput into |
||
12 ноя 13, 15:34 [15115971] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Ошибка по прежнему в нежелании читать хелп А там ясно написано, что для DELETE в MERGE ничего не указывается. Потому что DELETE выполняется для таблицы, уже указанной в MERGE |
||
12 ноя 13, 15:37 [15115997] Ответить | Цитировать Сообщить модератору |
ИльдарSR Member Откуда: Сообщений: 466 |
Понял, спасибо большое. Сделал через delete + ouput into |
12 ноя 13, 15:50 [15116118] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |