Программирование хранимых процедур - не самая сильная моя сторона в программировании, но я пытаюсь стать лучше.Я наткнулся на бизнес-требования, которые для меня довольно сложны, и мне было интересно, если кто-то уже имел дело с этим в своей карьере.
В промежуточной таблице есть эти данные, которые необходимо загрузить в производствотаблица со вставкой для новых данных и вставкой-обновлением (как резервная копия) для старых данных.
Пример данных в рабочей таблице выглядит следующим образом:
AssetID | BeginDate | EndDate | Field1 | Field2 | FieldN
1 | (TS) | (TS) | 0.2351 | 1.3510 | 4.1234
Между тем в стадии подготовки:
AssetID | Field1 | Field2 | FieldN
1 | 0.2351 | 1.3510 | 4.1234
В prod для PK задано AssetID и BeginDate, в то время как в промежуточной стадии используется только AssetID (поскольку данные каждый раз сбрасываются).
Требуется написать хранимую процедуру, которая при наличииновые активы в промежуточной области, они вставляются как новые в prod (с BeginDate
как CURRENT_TIMESTAMP
и EndDate
как NULL
), между тем, если есть данные (в промежуточной), которые отличаются на Field1
, Field2
или FieldN
из производственного поля, затем записывается новая запись с такими же AssetID
, но BeginDate
как CURRENT_TIMESTAMP
и EndDate
как NULL
, а старая запись стот же самыйКомбинация (BeginDate
запоминается и EndDate
равна NULL
) обновляется с EndDate
как CURRENT_TIMESTAMP
.Хранимая процедура не имеет параметров, все выполнение должно выполняться для 2 таблиц в рамках одной и той же хранимой процедуры.
Кто-нибудь из вас сталкивался с подобной задачей / требованием?Если да, не могли бы вы поделиться своим решением, пожалуйста?