【问题标题】:How to insert table 1 to table 2 as daily date based from table 1 id=1 to table 2 daily by auto id creation?如何通过自动创建 id 每天将表 1 插入表 2 作为每日日期从表 1 id = 1 到表 2?
【发布时间】:2021-08-03 02:15:31
【问题描述】:

我想通过自动创建用于存储的 id 1、2、3、4、5 等,每天将基于日期的表 1 id=1(插入)数据插入并存储到另一个表 2(存储)中table 1 id=1 data to table 2 data like

数据库表名表1

id name result date
1 user 123_65_258 12-06-2021
2 user2 234_65_678 12-06-2021

次日(日期 13-06-2021)

数据库表名表1

id column(1)name column(2) result column(3) date
1 user 145_02_679 13-06-2021
2 user2 235-05_357 13-06-2021

数据库表名table2 select from table1 id=1

id coulme(1) date coulme(2) data1 coulme(3)data2 coulme(4)data3
1 12-06-2021 123 65 258
2 13-06-2021 145 02 679

【问题讨论】:

  • 您使用的是哪种 DBMS 产品? “SQL”只是所有关系数据库都使用的一种查询语言,而不是特定数据库产品的名称。请为您使用的数据库产品添加tagWhy should I tag my DBMS

标签: sql


【解决方案1】:

我不确定您使用的是哪个数据库。如果您使用的是 Oracle 数据库或任何其他数据库,我们可以通过使用触发器来实现。

这里我们在 TABLE1_ID 中维护了 TABLE1 的 ID,以便查询历史记录。

table2_seq:这是Oracle中创建的序列对象。

触发代码如下:

create or replace TRIGGER dv_trig_table1
BEFORE INSERT OR UPDATE ON TABLE1
FOR EACH ROW
DECLARE
v_date TABLE2.COLUMN1_DATE%TYPE;
-- MAIN
BEGIN
 SELECT MAX(COLUMN1_DATE) into v_date
  FROM TABLE2 
  WHERE TABLE1_ID = :NEW.ID;
   IF v_date IS NULL OR v_date < :NEW.date THEN
      INSERT INTO TABLE2(ID,TABLE1_ID, COLUMN1_DATE, DATA1, DATA2, DATA3)
      VALUES(table2_seq.nextval,:NEW.ID, :NEW.DATE, SUBSTR(:NEW.RESULT,1,3),SUBSTR(:NEW.RESULT,5,2),SUBSTR(:NEW.RESULT,8,3)) ;        
   END IF;
END;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 2019-09-28
    • 2020-10-01
    • 1970-01-01
    相关资源
    最近更新 更多