如何借助触发器 (Oracle) 将现有记录从 parent table 移动到新创建的 child table?
How can I move existing records from parent table to newly created child table with the help of triggers (Oracle)?
我想创建一个触发器,其中 child table 从 parent table.
中提取所有现有记录
我创建了 child tables 引用 parent table 主键作为新 table
中的外键
CREATE OR REPLACE TRIGGER trigger name
AFTER INSERT ON table_name(parent_table)
FOR EACH ROW
BEGIN
insert statement for child table;
END;
上面的触发器是为将插入 post 到 child table 创建的记录创建的,我想推送所有旧记录(在 [=21 之前存在) =]table创建)到新的childtable。触发器是否有助于提取所有旧记录?
显然不!
trigger
将开始从父 table post 创建的 trigger
向子 table 插入记录。在 trigger
创建之前插入父 table 的记录需要手动插入。
如果你想在创建 trigger
之前将所有记录从父 table 拉到子 table 中,那么你需要编写一次性 INSERT
查询作为以下:
INSERT INTO CHILD_TABLE
SELECT * FROM PARENT_TABLE P
WHERE NOT EXISTS (SELECT 1 FROM CHILD_TABLE C WHERE P.PK = C.FK);
-- 或--
INSERT INTO CHILD_TABLE
SELECT * FROM PARENT_TABLE P
WHERE P.PK IN
(SELECT PK FROM PARENT_TABLE
MINUS
SELECT FK FROM CHILD_TABLE
)
干杯!!
我想创建一个触发器,其中 child table 从 parent table.
中提取所有现有记录我创建了 child tables 引用 parent table 主键作为新 table
中的外键CREATE OR REPLACE TRIGGER trigger name
AFTER INSERT ON table_name(parent_table)
FOR EACH ROW
BEGIN
insert statement for child table;
END;
上面的触发器是为将插入 post 到 child table 创建的记录创建的,我想推送所有旧记录(在 [=21 之前存在) =]table创建)到新的childtable。触发器是否有助于提取所有旧记录?
显然不!
trigger
将开始从父 table post 创建的 trigger
向子 table 插入记录。在 trigger
创建之前插入父 table 的记录需要手动插入。
如果你想在创建 trigger
之前将所有记录从父 table 拉到子 table 中,那么你需要编写一次性 INSERT
查询作为以下:
INSERT INTO CHILD_TABLE
SELECT * FROM PARENT_TABLE P
WHERE NOT EXISTS (SELECT 1 FROM CHILD_TABLE C WHERE P.PK = C.FK);
-- 或--
INSERT INTO CHILD_TABLE
SELECT * FROM PARENT_TABLE P
WHERE P.PK IN
(SELECT PK FROM PARENT_TABLE
MINUS
SELECT FK FROM CHILD_TABLE
)
干杯!!