【发布时间】:2020-10-05 20:00:16
【问题描述】:
我正在使用 Oracle 数据库 12C。我有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_ORDER 表具有相同数据类型的VK_MODIFY 表。
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)
)
【问题讨论】: