程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了触发器将同一行复制到另一个表中大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决触发器将同一行复制到另一个表中?

开发过程中遇到触发器将同一行复制到另一个表中的问题如何解决?下面主要结合日常开发的经验,给出你关于触发器将同一行复制到另一个表中的解决方法建议,希望对你解决触发器将同一行复制到另一个表中有所启发或帮助;

如何获取表1到表2中的值;这将根据 table1 的列(订单)复制行

表 1:

ID       TICKETID USERname FirsTname LASTname orders STATUS
SEL00007            Hema1     Hema    Sri       3      New
SEL00008            Romi1     Romi     T        2      New

表 2:

ID       TICKETID USERname FirsTname LASTname orders STATUS
SEL00007            Hema1     Hema    Sri       3      New
SEL00007            Hema1     Hema    Sri       3      New
SEL00007            Hema1     Hema    Sri       3      New
SEL00008            Romi1     Romi     T        2      New
SEL00008            Romi1     Romi     T        2      New

这是我参了很多其他帖子后得出的结论

CREATE OR replaCE trigGER Duplicate_Rows
AFTER INSERT OR updatE ON table1
REFERENCING NEW AS New olD AS old
FOR EACH ROW
DECLARE N_Ord numbER;
BEGIN
N_Ord := (SELECT (orders) from table2);
INSERT INTO Usertable2 (TICKETID,username,firstname,lastname,Status)
SELECT :New.TICKETID,:New.username,:New.firstname,:New.lastname,:New.Status
FROM dual
CONNECT BY LEVEL <= N_Ord; 
END Duplicate_Rows;
/

请帮忙!!

解决方法

关闭;无需单独选择 orders 到变量中;无论如何它都会失败,因为表正在发生变化,因此触发器无法看到它。

触发器:

SQL> CREATE OR replaCE trigGER trg_ai_t1 AFTER
  2    INSERT ON table1
  3    FOR EACH ROW
  4  BEGIN
  5    INSERT INTO table2(
  6      id,7      ticketid,8      username,9      firstname,10      lastname,11      orders,12      status
 13    )
 14      SELECT :new.id,15             :new.ticketid,16             :new.username,17             :new.firstname,18             :new.lastname,19             :new.orders,20             :new.status
 21      FROM dual CONNECT BY
 22        level <= :new.orders;
 23
 24  END;
 25  /

trigger created.

插入table1

SQL> INSERT INTO table1(
  2    id,3    ticketid,4    username,5    firstname,6    lastname,7    orders,8    status
  9  )VALUES(
 10    'SEL00007',11    NULL,12    'Hema1',13    'Hema',14    'Sri',15    3,16    'New'
 17  );

1 row created.

结果:

SQL> SELECT *
  2  FROM table1;

ID           TICKETID USERNAME   FIRST LASTN     orders STATU
---------- ---------- ---------- ----- ----- ---------- -----
SEL00007              Hema1      Hema  Sri            3 New

SQL> SELECT *
  2  FROM table2;

ID           TICKETID USERNAME   FIRST LASTN     orders STATU
---------- ---------- ---------- ----- ----- ---------- -----
SEL00007              Hema1      Hema  Sri            3 New
SEL00007              Hema1      Hema  Sri            3 New
SEL00007              Hema1      Hema  Sri            3 New

SQL>

大佬总结

以上是大佬教程为你收集整理的触发器将同一行复制到另一个表中全部内容,希望文章能够帮你解决触发器将同一行复制到另一个表中所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。