2015-07-09 5 views
0

Выполнение запроса на SQL-сервере, который выполняет следующие действия, используя 2 таблицы: таблица 1, называемая «accadj», имеет список старых и новых значений для 3 поля, поэтому accadj имеет 6 столбцов. В таблице 2, называемой «accnt», есть фактические записи. когда запись в accnt соответствует старым значениям в accadj, значения в accnt изменяются так, чтобы они соответствовали новым значениям в accadj. accadj выглядит следующим образом:Нужно отображать записи базы данных до и после внесения изменений в SQL-сервер

accadj looks like this

и ACCNT выглядит следующим образом: enter image description here

картины являются только отрывками полных таблиц. код для запроса, IM, описывающие работы и выглядит следующим образом:

Update accnt 
set accnt.accno = accadj.accnonew, 
    accnt.jno =accadj.jnonew, 
    accnt.saccno =accadj.saccnonew 
from accnt accnt join accadj accadj with(nolock) 
on accnt.accno = accadj.accnoold 
    and accnt.jno = accadj.jnoold 
    and accnt.saccno =accadj.saccnoold 

Мне нужно, чтобы показать, что записи выглядели как до, так и после того, как запрос был запущен, а затем распечатать этот список. я знаю, как показать записи до того, как запрос был запущен с помощью этого кода на линии всасывания кода я только что описал:

select accnt.* 
from accnt, accadj 
where accnt.accno = accadj.accnoold 
and accnt.jno = accadj.jnoold 
and accnt.saccno =accadj.saccnoold 

, но после того, как запрос был запущен, старые записи больше не существует, и я не могу понять как отображать вновь измененные записи со старыми версиями. любые мысли о том, как это исправить?

+0

Вам нужно будет запустить запрос ДО вашего обновления, чтобы получить значения перед обновлением. Прикрепите эти значения в таблице temp, а затем выполните обновление. Кстати, почему вы используете NOLOCK здесь? Вы в порядке с отсутствующими и/или повторяющимися строками? Это не волшебный вариант. http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/ –

+0

Я не знаю, что он делает, но кто-то показал мне, как сделать эту программу, есть ли лучший способ? im не в порядке с недостающими строками. – Vbasic4now

+0

Затем удалите подсказку NOLOCK. –

ответ

3

Используйте ВЫХОДНОЙ пункт о выписке обновления https://msdn.microsoft.com/en-us/library/ms177564.aspx

Добавленная таблица новых значений и удаляются ваши старые значения. Вы можете вставить их в переменную temp table/table, а затем добавить в свой код пользователя. Или, если ваша версия SQL поддерживает просмотр данных об изменении данных.

+0

Я не использую mssql. как я могу использовать захват данных изменений? – Vbasic4now

+0

К сожалению, ваши теги показывают, что вы используете SQL-Server, какой движок вы используете? который изменит доступные вам варианты. –

+0

AnySQL Maestro professional version 13.2.0.15 – Vbasic4now

Смежные вопросы