Я имею таблицу А и таблицу В.обновление записей в таблице А из таблицы B, если столбец XYZ (контрольная сумма) изменения в таблице В
Таблица A создается из таблицы B (и некоторые другие соединения таблиц операции) , Таблица A содержит все ее столбцы, которые являются поднаборами столбца в таблице B.
В таблице A и таблице B. имеется столбец, называемый check_sum. В основном это вычисляемый столбец, и если значение столбца изменяется, то check_sum (расчетное значение). Например:
Table A (schema):
cust_id (pk), cust_name, cust_location, check_sum ... other columns (no need to worry about them)
Table B (schema) :
cust_id (pk), cust_name, cust_location, check_sum
Первоначально таблица B и А имеют записи, как показано ниже:
Table A: (sample record)
1, John, USA, abc222abc, ... other columns
Table B: (sample record)
1, John, USA, abc222abc
Теперь давайте говорить Джон меняет свое место расположения в Великобритании, то соответствующая запись в таблице А выглядит следующим образом
Table A: (sample record)
1, John, UK, checkSumChanged, ... other columns
Теперь мне нужно обновить таблицу B соответственно, чтобы вместо местоположения Джона как США он должен был иметь его как Великобритания. Здесь важна контрольная сумма столбца, поскольку ее значение изменяется в таблице А, если какой-либо столбец изменяется.
Это часть, на которой я застрял. Не удалось обновить строки «CHANGED» из таблицы A в таблицу B. У меня следующий запрос ниже. Он обновляет все строки, а не только измененные строки.
Вот запрос.
UPDATE tableB
SET
tableB.cust_name = tableA.cust_name,
tableB.cust_location = tableA.cust_location,
tableB.check_sum = tableA.check_sum
FROM
tableA inner join tableB
on tableA.cust_id = tableB.cust_id
and tableA.check_sum != tableB.check_sum
Любые идеи или предложения, как я могу исправить свой запрос, чтобы просто обновить измененную запись.
Заранее благодарен!
Какие базы данных вы используете 'MySQL, postgresql'? –
postgresql, но как только я понимаю логику, я могу заставить ее работать с любой базой данных. – user1188611
Попробуйте это с предложением 'where' ' tableA inner join tableB на tableA.cust_id = tableB.cust_id WHERE tableA.check_sum! = TableB.check_sum' –