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

Откуда:
Сообщений: 263
есть ли возможность после Update получить список заапдейченных записей ...

хочу сделать Delete сразу поле UPDATE без процедур :) :\
6 дек 05, 16:56    [2146083]     Ответить | Цитировать Сообщить модератору
 Re: получить ID проапдейченных данных  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2505
Ну вооббще-то первое можно сделать триггером (в таблице deleted).
А зачем удалять то, что обновили? Может проще сразу удалить?
6 дек 05, 16:59    [2146100]     Ответить | Цитировать Сообщить модератору
 Re: получить ID проапдейченных данных  [new]
JackS
Member

Откуда:
Сообщений: 263
есть таблица в которой хранятся промежуточные данные,
UPDATE их суммирует каунтит и прочее и результаты вписывает в другую таблицу ... после чего эти промежуточные не нужны ... вот мне и надо бы узнать ID тех записей которые попали участвовали в апдейте что бы их потом удалить ...
6 дек 05, 17:24    [2146301]     Ответить | Цитировать Сообщить модератору
 Re: получить ID проапдейченных данных  [new]
Glory
Member

Откуда:
Сообщений: 104760
В SQL2000 - триггер.
В SQL2005 update может возвращать затронутые командой записи
6 дек 05, 17:25    [2146308]     Ответить | Цитировать Сообщить модератору
 Re: получить ID проапдейченных данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
JackS
есть таблица в которой хранятся промежуточные данные,
UPDATE их суммирует каунтит и прочее и результаты вписывает в другую таблицу ... после чего эти промежуточные не нужны ... вот мне и надо бы узнать ID тех записей которые попали участвовали в апдейте что бы их потом удалить ...

Сделать доп поле uniqueidentifier, получить перед вставкой значение newid() и в апдейте апдейтить в том числе и это поле. Тогла поле апдейта Вы легко получите проапдейченные записи. Либо делать в триггере.
6 дек 05, 17:26    [2146313]     Ответить | Цитировать Сообщить модератору
 Re: получить ID проапдейченных данных  [new]
JackS
Member

Откуда:
Сообщений: 263
Гавриленко Сергей Алексеевич

Сделать доп поле uniqueidentifier, получить перед вставкой значение newid() и в апдейте апдейтить в том числе и это поле. Тогла поле апдейта Вы легко получите проапдейченные записи.


тогда я думаю лучше сначала селектом "по условию" апдейта получить список полей... затем сделать UPDATE .... IN () а затем DELETE .... IN () - так думаю нагрузки будет меньше чем
делать UPDATE "по условию" + доп. поле а затем DELETE ... IN ( SELECT по новому полю)

что скажете ?
6 дек 05, 17:40    [2146378]     Ответить | Цитировать Сообщить модератору
 Re: получить ID проапдейченных данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
JackS
Гавриленко Сергей Алексеевич

Сделать доп поле uniqueidentifier, получить перед вставкой значение newid() и в апдейте апдейтить в том числе и это поле. Тогла поле апдейта Вы легко получите проапдейченные записи.


тогда я думаю лучше сначала селектом "по условию" апдейта получить список полей... затем сделать UPDATE .... IN () а затем DELETE .... IN () - так думаю нагрузки будет меньше чем
делать UPDATE "по условию" + доп. поле а затем DELETE ... IN ( SELECT по новому полю)

что скажете ?

Лучше триггер.
6 дек 05, 17:45    [2146404]     Ответить | Цитировать Сообщить модератору
 Re: получить ID проапдейченных данных  [new]
JackS
Member

Откуда:
Сообщений: 263
:) ок, спасибо, пойду читать про них .. я в MSSQL пока новичок :\
6 дек 05, 17:49    [2146422]     Ответить | Цитировать Сообщить модератору
 Re: получить ID проапдейченных данных  [new]
vadim_march_забыл_пароль
Guest
можно маленький вопрос?
нужно удалить только проапдэйченные данные или все? :-)
6 дек 05, 18:05    [2146518]     Ответить | Цитировать Сообщить модератору
 Re: получить ID проапдейченных данных  [new]
vadim_march_забыл_пароль
Guest
я спросил так, на всякий случай, вдруг человеку truncate table нужен :-)
а вообще апдэйт - штука тяжёлая и иногда в слип падает ...

Как вариант:

Сделать партишн вью с чеком на колонку [__Z]
основная табла __Z=0, а уничтожаемая __Z = -1

Дальнейшая мысль уже озвучена была Сергеем Алексеевичем:
в апдейте апдейтить в том числе и это поле
Апдэйт производить через вью, назначая __Z=-1.
Тогда все проапдэйченные строки автоматом муваются во вспомогательную таблу. Далее транкэтить эту таблу.
6 дек 05, 18:20    [2146607]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить