Как реализовать такую ​​стратегию вставки и вставки и обновления? - PullRequest
0 голосов
/ 15 октября 2018

Программирование хранимых процедур - не самая сильная моя сторона в программировании, но я пытаюсь стать лучше.Я наткнулся на бизнес-требования, которые для меня довольно сложны, и мне было интересно, если кто-то уже имел дело с этим в своей карьере.

В промежуточной таблице есть эти данные, которые необходимо загрузить в производствотаблица со вставкой для новых данных и вставкой-обновлением (как резервная копия) для старых данных.

Пример данных в рабочей таблице выглядит следующим образом:

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 таблиц в рамках одной и той же хранимой процедуры.

Кто-нибудь из вас сталкивался с подобной задачей / требованием?Если да, не могли бы вы поделиться своим решением, пожалуйста?

...