我有一个名为event的表 ,并创建了另一个全局临时表tmp_event,其中包含与事件相同的列和定义.是否可以使用此方法将事件中的记录插入tmp_event?
DECLARE
v_record event%rowtype;
BEGIN
Insert into tmp_event values v_record;
END;
Run Code Online (Sandbox Code Playgroud)
事件表中有太多列,我想尝试这个,因为我不想列出所有列.
忘了提一下:我会在触发器中使用它,这个v_record可以作为对象:在EVENT表上插入之后是新的吗?
我有一个AFTER INSERT OR UPDATE OR DELETE,我正在写存储发生在某个表中的每个记录修改的触发,通过复制INSERT和UPDATE :NEW值成镜表,并DELETE在:OLD值.
我可以通过有条件地将:NEW或者:OLD记录传递给一个程序然后插入我的历史表中来大大地解决我的代码.不幸的是,我似乎找不到通过整个:OLD或:NEW记录的方法.
我是否遗漏了某些内容,或者在调用插入过程时是否无法避免枚举每个列:NEW和:OLD列?
我想做以下事情:
DECLARE
PROCEDURE LOCAL_INSERT(historyRecord in ACCT.ACCOUNTS%ROWTYPE) IS
BEGIN
INSERT INTO ACCT.ACCOUNTS_HISTORY (ID, NAME, DESCRIPTION, DATE) VALUES (historyRecord.ID, historyRecord.NAME, historyRecord.DESCRIPTION, SYSDATE);
END;
BEGIN
IF INSERTING OR UPDATING THEN
LOCAL_INSERT(:NEW);
ELSE --DELETING
LOCAL_INSERT(:OLD);
END IF;
END;
Run Code Online (Sandbox Code Playgroud)
但我坚持这样做:
DECLARE
PROCEDURE LOCAL_INSERT(id in ACCT.ACCOUNTS.ID%TYPE,
name in ACCT.ACCOUNTS.NAME%TYPE,
description in ACCT.ACCOUNTS.DESCRIPTION%TYPE) IS
BEGIN
INSERT …Run Code Online (Sandbox Code Playgroud)