Bonjour!
Je sèche depuis quelques temps... j'ai une table 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 create table tb_test ( pk_test number(6), champ varchar2(30), constraint ct_pk_test primary key (pk_test) );
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???
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; /
Partager