Salut
sur une table qui n'a pas de clé primaire, je voudrais empêcher l'ajout de lignes en double alors j'ai pensé à contrôler ça dans le before insert et update de cette table. mon idée étant de parcourir la table en faisant une recherche sur 4 champs, si le nombre de lignes retournés et supérieur à 0 une exception est déclenchée.
voici le déclencheur responsable de cette manip :
malheureusement je n'intercepte rien ! peut-être que row-count a des restrictions dont je connais pas ?
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
25
26
27
28
29
30
31 CREATE OR ALTER trigger tb_frais_exploitations_bi0 for tb_frais_exploitations active before insert position 0 AS declare variable date_m date; declare variable c_centre smallint; declare variable c_secteur smallint; declare variable c_sr smallint; declare variable c_step smallint; begin /* sélectionner les champs qui ne peuvent être en double une fois réunis */ select date_mois, code_centre, code_secteur, code_sr, code_step from tb_frais_exploitations a where ( a.date_mois = new.date_mois and a.code_centre = new.code_centre and a.code_step = new.code_step and a.code_sr = new.code_sr and a.code_secteur = new.code_secteur ) into :date_m, :c_centre, :c_secteur, :c_sr, :c_step; /* rechercher la ligne correspondante, si trouver alors générer l'exception */ if ( row_count > 0) then exception Ligne_En_double; end
une idée, une piste .... merci par avance.
Partager