8795 sujets

Développement web côté serveur, CMS

bonjour
je j'essaye de créer un trigger mais j'ai un problème

par exemple j'ai une table titre
avec idtitre en clé primaire
et idpers en clé secondaire

reliée avec une table personne
avec idpers en clé primaire)

création du trigger:

create or replace
TRIGGER tr_suppression2
after delete
ON titre
for each row
BEGIN
declare
nbretitre numeric;
begin
select count(idtitre) into nbretitre
from titre
where idpers=:old.idpers;
if 2>nbretitre
then
delete from personne where idpers= :old.idpers ;
end if;
end;
end;



et après je mets
delete from titre where idtitre ='quelquechose';

erreur :
la table titre est en mutation ; le déclencheur ou la fonction ne peut la voir
Salut,

le problème de table en mutation survient lorsqu'un trigger affecté à une table tente d'effectuer une requête sur cette même table.

Je pense que tu devrais t'en sortir en rajoutant un champ nbtitres à la table personne qui serait incrémenté à chaque insert dans la table titre. Du coup ton trigger after delete de la table titre vérifie la valeur nbtitres de la personne :
* si > 1 on décrémente nbtitres
* si = 1 on delete la ligne personne
Modifié par Heyoan (02 Nov 2009 - 21:19)