Message posté par : Alban Kraus
----------------------------------------
Bonjour,
Je suppose que votre système de gestion de base de données est PostgreSQL dans une version
récente. Je suppose que vous n'obtenez pas de message d'erreur (sinon, éditez la
question et indiquez-le). Je suppose que vous avez bien mis le code du trigger dans une
fonction séparée.
Avez-vous vérifié que le code de votre trigger est bien exécuté ? Que vous rentrez bien
dans le IF ? Vous pouvez insérer au début une erreur de logique (par exemple SELECT
CHAMP_INEXISTANT; ) ou carrément un message (RAISE 'coucou'; ).
Sans avoir bien cerné votre application, deux choses m'étonnent dans votre code :
-----------------
Code :
select CODE_ENTRETIEN_FUTUR into CODE_ENT from SIR.SIR_ARBRE_ENTRETIEN_FUTUR;
-----------------
Avec cette requête, vous sélectionnez la colonne CODE_ENTRETIEN_FUTUR de toutes les lignes
de la table SIR_ARBRE_ENTRETIEN_FUTUR, et la première ligne du résultat est enregistré
dans la variable CODE_ENT. Ne vouliez-vous pas plutôt écrire :
-----------------
Code :
SELECT NEW.code_entretien_futur INTO STRICT CODE_ENT;
-----------------
(Je conseille d'utiliser toujours la syntaxe SELECT ... INTO STRICT variable, qui
vérifie que le SELECT renvoie exactement une seule ligne.)
Votre second INSERT rajoute une ligne de valeurs par défaut (NULLs ?) portant
l'identifiant O_ID+2 ; à moins que vous ne vouliez que les lignes non-vides aient pour
identifiant un multiple de 3 (1, 4, 7, etc.), je ne comprends pas l'intérêt de cette
ligne.
Hormis cela, votre premier INSERT me paraît approprié et correct.
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=354174#p354174
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net