如何按顺序插入和读取记录?

问题描述 投票:0回答:1

给定

unprocessed_TableA
模式:

 PK(col_1, col_2, col_3), col_4, col_5
 col_1 VARCHAR2(2)
 col_2 VARCHAR(16)
 col_3 VARCHAR(3)
 col_4 NUMBER
 col_5 NUMBER     

上面的模式可以容纳额外的列来维持排序


后端服务从kafka接收新的记录集(多于一条记录)并存储在数据库中。所以,保持顺序很重要

  1. 如何在表
    INSERT
    中按顺序
    unprocessed_TableA
    添加新记录?这样
    SELECT
    就可以从
    unprocessed_TableA
    读取一系列sequence(1-n)
  2. 的记录

给定

processing_TableA
模式:

 PK(col_1, col_2, col_3), col_4, col_5
 col_1 VARCHAR2(2)
 col_2 VARCHAR(16)
 col_3 VARCHAR(3)
 col_4 NUMBER
 col_5 NUMBER
  1. 当从
    SELECT
    unprocessed_TableA
    查询记录(按顺序)时,触发对表
    INSERT
    中的相同记录按顺序进行
    processing_TableA
    查询。如何在
    SELECT
    查询上编写触发器?
database oracle plsql triggers
1个回答
0
投票

一个选项是创建一个触发器,将序列号插入表中:

create sequence seq;

create or replace trigger trg_bi_ta
  before insert on unprocessed_TableA 
  for each row
begin
  :new.col_4 := seq.nextval;
end;
/

那么你就

select * from unprocessed_TableA order by col_4;

并按照插入的顺序获取行。

© www.soinside.com 2019 - 2024. All rights reserved.