oracle - 使用“而不是删除”创建触发器
问题描述
我想将删除语句视为更新,但它会引发此错误,我不知道它是什么意思。
create or replace trigger Miembros_V_IOD
instead of delete on Miembros_V
for each row
Begin
update Miembros set (end_date = sysdate)
where Miembros.nick = :old.nick
and Miembros.club = :old.club;
end;
LINE/COL ERROR
-------- ----------------------------------------------------------
2/4 PL/SQL: SQL Statement ignored
2/34 PL/SQL: ORA-00907: missing right parenthesis
解决方案
错误指向=
标志。你得到一个 PL/SQL 错误——尽管是由内部 SQL 引起的——并且对于触发器,PL/SQL 错误中的行号从DECLARE
(如果有的话)或开始BEGIN
,而不是从整个CREATE
语句的开始。所以2/34
指的是 PL/SQL 部分第二行的第 34 个字符,即:
update Miembros set (end_date = sysdate)
...这是=
.
你不应该有括号(end_date = sysdate)
:
create or replace trigger Miembros_V_IOD
instead of delete on Miembros_V
for each row
begin
update Miembros set end_date = sysdate
where Miembros.nick = :old.nick
and Miembros.club = :old.club;
end;
/
View MIEMBROS_V created.
文档中的语法图显示,括号可以围绕等号左侧的列列表,或围绕右侧的子查询;但不是围绕整个set
条款。因为您set (end_date
期望接下来有一个逗号或右括号,即set (end_date) = ...
- 因此 ORA-00907 在它没有看到时被抛出。
推荐阅读
- android - 如何管理和定义我们从应用程序发送的所有数据分析?
- swift - 使用“@objc”属性覆盖的扩展方法背后的机制是什么?
- java - 字符串查询验证 json 数据
- vmware - VMWare 跨数据存储共享 SAN 卷。可能吗?
- git - 我可以从一个绝对没有安装 Git 命令的简单文件服务器克隆吗?
- android - 无法在 recyclerview 适配器类中解决
- javascript - 带分页的 Jquery 手风琴
- javascript - xlsx 到带有空单元格的 json
- reactjs - Material UI:开发中的类名被丑化了
- javascript - “向左飘”?让 div 从容器顶部开始向下生长