Вие правите тригер "преди вмъкване". В такъв тригер вие не вмъквате в същата таблица -- в противен случай можете да получите безкраен цикъл. Просто присвоете на променливата стойност:
CREATE OR REPLACE TRIGGER trig_deptno2
BEFORE INSERT ON dept2
FOR EACH ROW
DECLARE v_deptno NUMBER(2) ;
BEGIN
SELECT coalesce(MAX(deptno) + 1, 1) INTO :new.deptno
FROM dept2 ;
END trig_deptno2 ;
Когато тригерът приключи, той ще вмъкне правилните стойности от new
променлива.
Нека просто кажа, че последователностите съществуват с причина и трябва да ги използвате за тази цел. Опитът да имитирате тяхната функционалност вероятно ще доведе до грешки.