首页 > 解决方案 > :NEW 表或视图不存在

问题描述

我是 SQL 新手,我正在尝试在 SQLdeveloper 上创建此触发器,但我得到“表或视图不存在”并且无法解决它。为什么这不起作用?提前致谢!

CREATE OR REPLACE TRIGGER insertion
    AFTER 
    INSERT
    ON FUNC
FOR EACH ROW   
BEGIN
    select * from :NEW;
END;

标签: oracleplsqltriggerssql-insert

解决方案


您不能从中选择:NEW- 此外,SELECT在触发器中运行这样的查询并没有真正意义。

但是,您可以:NEW使用来访问所插入行的所有值,并将它们用于您的任何目的。如果您有before触发器,您也可以修改它们。

这是一个将插入的行复制到另一个表的示例,对原始值进行了一些更改:

create table func(id int, val varchar(10));
create table bck (id int, val varchar(10));

create or replace trigger trg_func_after_insert
    after insert on func 
    for each row   
begin
    insert into bck (id, val) values (:new.id + 1, :new.val || '_bck');
end;
/

现在说一个新行插入到func

insert into func (id, val) values (1, 'foo');

内容复制到bck

select * from bck;

ID | VAL    
-: | :------
 2 | foo_bck

DB Fiddle 上的演示


推荐阅读