oracle - :NEW 表或视图不存在
问题描述
我是 SQL 新手,我正在尝试在 SQLdeveloper 上创建此触发器,但我得到“表或视图不存在”并且无法解决它。为什么这不起作用?提前致谢!
CREATE OR REPLACE TRIGGER insertion
AFTER
INSERT
ON FUNC
FOR EACH ROW
BEGIN
select * from :NEW;
END;
解决方案
您不能从中选择: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
推荐阅读
- php - 我无法使用 PHP 7.3 在实时服务器上安装我的 laravel 8 应用程序
- java - Dropwizard:需要优雅地关闭 dropwizard 应用程序
- javascript - 无法在javascript中将元素从一个函数传递到另一个函数
- python - python标签跨度硒
- css - 使用 CSS 的移动响应式设计
- css - 堆栈导航栏和下一节
- ansible - 从 Ansible 中的 inventory_hostname 获取第 n 个主机
- google-sheets - 谷歌表格,当复选框选中时更改货币
- xamarin - SW=6985 读取电子护照(DG5,DG7)中间出错
- javascript - 在javascript中解析日期字符串数组