[PL/SQL Oracle 9i] décrémenter une séquence dans un trigger
Bonjour!
Je sèche depuis quelques temps... j'ai une table test
Code:
1 2 3 4 5 6
|
create table tb_test (
pk_test number(6),
champ varchar2(30),
constraint ct_pk_test primary key (pk_test)
); |
lorsque j'insère des données dans cette table, un trigger se déclenche
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
create or replace trigger tr_essai
before insert on tb_test
for each row
declare
max_pk number;
sequ number;
begin
select max(pk_test) into max_pk from tb_test;
select sq_incr.currval into sequ from dual;
if max_pk>sequ then
loop
exit when sequ=max_pk+1;
select sq_incr.nextval into sequ from dual;
end loop;
else
loop
?????????
?????????
end loop;
end if;
:new.pk_test:=sequ;
end;
/ |
ce que j'aimerais, c'est que lorsque j'insère des données avec ma sequence sq_incr, si il existe des clé primaires suppérieures à la valeur de ma séquence, celle-ci s'incrémente jusqu'à avoir la valeur maximum+1. ça, c'est bon. maintenant, comment faire pour décrémenter la séquence, lorsqu'aucun enregistrement ce trouve dans ma table (par exemple) et que ma séquence en est à 354 (toujours pas exemple)??? quelqu'un aurait une idée???