Я использую Oracle базу данных 12 C. У меня есть таблица VK_ORDER
, в которой много избыточных данных с комбинацией столбцов OID
и EXID
. В таблице есть столбец FILENAME
, в котором дается имя файла, из которого данные вставляются в эту таблицу, а в таблице есть столбец SYSTEM_INSERTED_AT
, в котором дата и время вставлены. В этой таблице выполняется ежедневное задание, и в эту таблицу вставляются избыточные данные комбинации OID
и EXID
.
Я создал другую таблицу VK_MODIFY
со столбцами ниже:
OID
EXID
FILENAME
FIRST_INSERT_DATE
LATEST_MODIFY_DATE
Теперь я хочу написать sql статус, я не уверен, работает ли Merge
sql статус со следующими условиями:
Если комбинация значений столбцов OID, EXID
еще не существует в таблице тогда:
- Insert a new row
- Set FIRST_INSERT_DATE = LATEST_MODIFY_DATE = now()
- Write the name of the file to FILENAME
Если комбинация значений столбцов OID, EXID
уже существует в таблице, то:
- set LATEST_MODIFY_DATE = now()
- append the name of the file to FILENAME (prepend a comma – no space)
Я могу просто запускать этот запрос один раз в день для обновления моей таблицы VK_MODIFY
. Я не уверен, как написать этот sql статус и возможно ли использовать oracle sql оператор.
DDL
для VK_MODIFY
таблицы, которая имеет тот же тип данных, что и VK_ORDER
таблица .
CREATE TABLE
VK_MODIFY
(
FIRST_INSERT_DATE TIMESTAMP(6) NOT NULL,
LATEST_MODIFY_DATE TIMESTAMP(6) NOT NULL,
FILENAME VARCHAR2(60) NOT NULL,
OID INTEGER,
EXID VARCHAR2(100)
)