Ошибка указывает на знак =
. Вы получаете ошибку PL / SQL - хотя и вызванную внутренним SQL - и для триггера номера строк в ошибках PL / SQL начинаются с DECLARE
(если есть) или BEGIN
, не с начала общей инструкции CREATE
. Таким образом, 2/34
относится к символу 34 второй строки части PL / SQL, который:
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.
db <> fiddle
Синтаксическая диаграмма в документации показывает что круглые скобки могут go располагаться вокруг списка столбцов слева от знака равенства или вокруг подзапроса справа; но не вокруг всей статьи set
. Поскольку у вас есть set (end_date
, он ожидает, что после него будет запятая или закрывающая скобка, то есть set (end_date) = ...
- следовательно, ORA-00907 выбрасывается, когда он этого не видит.