У меня есть две таблицы, которые мне нужно обновить в базе данных. Я обновляю эти таблицы из данных в другой базе данных. Если запись в таблице 1 обновляется, мне нужно, чтобы старая информация в таблице 1 хранилась в таблице 2. Мне нужна логика, чтобы провести сравнение, а затем обновить таблицу 2, если это необходимо. Мой вопрос: какой лучший способ сделать это? Я думаю, что хранимая процедура была бы способ пойти, но я не уверен.Скопируйте данные в другую таблицу перед обновлением или вставкой. Использовать хранимую процедуру?
Вот более наглядное объяснение.
Table 1
Student Grade
james 6
sarah 5
Table 2
EMPTY
Допустим, что приведенные ниже данные являются тем, что я вытаскиваю из другой базы данных.
Other Database
Student Grade
james 6
sarah 4
tom 7
Вот некоторая неаккуратная логика, которая может помочь объяснить, что мне нужно делать.
--If records match do nothing
IF otherDatabase.student = table1.student AND otherDatabase.grade = table1.grade THEN do nothing
--If partial match copy old data to table 2 and insert new data to table1
IF otherDatabase.student = table1.student AND otherDatabse.grade != table1.grade
THEN copy table1.student to table2.student AND copy table1.grade to table2.grade THEN UPDATE table1.grade from otherDatabase.grade
--If no match copy new data to Table1
IF otherDatabase.student != table1.student AND otherDatabase.grade != table1.grade THEN INSERT otherDatabase.student AND otherDatabase.grade INTO table1
В моем примере, Джеймс не получила бы потрогать, сара бы получить переехала в таблицу 2, а затем вставить в таблицу 1 с новым сортом и томом бы вставляется в таблицу 1.
Я очень сожалею если это не имеет смысла. Пожалуйста, позвольте мне уточнить, если необходимо. Спасибо
Вы можете сделать это в одной таблице путем добавления нового столбца 'previous_grade' в таблице 1. Будет ли это быть подходящим решением? – Bohemian
Это хорошее решение. Однако мой пример просто прост. Мне действительно нужно сравнить около 8 полей. Кроме того, таблица 1 находится в базе данных, из которой мне не разрешено добавлять или удалять столбцы. Спасибо –