触发将同一行复制到另一行 table
Trigger to copy the same row into another table
如何获取 Table 1 到 Table2 中的值;这将复制基于 Table1 的列(订单)
的行
Table1:
ID TICKETID USERNAME FIRSTNAME LASTNAME ORDERS STATUS
SEL00007 Hema1 Hema Sri 3 New
SEL00008 Romi1 Romi T 2 New
Table2:
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;
/
请帮忙!!
关闭;不需要单独select orders
成一个变量;它无论如何都会失败,因为 table 正在变异,所以触发器看不到它。
触发器:
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>
如何获取 Table 1 到 Table2 中的值;这将复制基于 Table1 的列(订单)
的行Table1:
ID TICKETID USERNAME FIRSTNAME LASTNAME ORDERS STATUS
SEL00007 Hema1 Hema Sri 3 New
SEL00008 Romi1 Romi T 2 New
Table2:
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;
/
请帮忙!!
关闭;不需要单独select orders
成一个变量;它无论如何都会失败,因为 table 正在变异,所以触发器看不到它。
触发器:
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>