Bonjour!

Je sèche depuis quelques temps... j'ai une table test
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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???