Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
830 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [ORACLE] Trigger bien compilé qui ne marche pas bien

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ORACLE] Trigger bien compilé qui ne marche pas bien

n°687087
ludolitali​ano
Posté le 30-03-2004 à 09:56:23  profilanswer
 

Ciao,
je compile correctement le trigger :

Code :
  1. [cpp]CREATE OR REPLACE TRIGGER T_ECICountries 
  2.   BEFORE INSERT ON ECICountries 
  3.   FOR EACH ROW 
  4.      DECLARE NbRows INTEGER;
  5.      
  6.       -- Affectation de la numérotation automatique pour l'identifiant du pays 
  7.       BEGIN 
  8.         SELECT S_ECICountries.NEXTVAL INTO :new.ECICountries_Id FROM DUAL; 
  9.      
  10.       -- Si valeur manquante de pays
  11.       IF (Trim(:new.ECICountries_ShortName)='') OR (:new.ECICountries_ShortName=NULL) THEN
  12.           -- On insère l'info dans table des logs 
  13.           INSERT INTO LogTable VALUES (SYSDATE, 'Valeur manquante ECICountries_ShortName : ','Valeur manquante','ECICountries',:new.ECICountries_Id, Null, 'Warning'); 
  14.           -- Puis on insère 'NR' comme ShortName de pays
  15.           SELECT 'NR' INTO :NEW.ECICountries_ShortName FROM DUAL;
  16.       END IF; 
  17.        
  18.       -- On insère une nouvelle valeur de pays donc on l'inscrit dans la log
  19.       INSERT INTO LogTable VALUES (SYSDATE, 'Nouvelle valeur ECICountries_ShortName : '|| :new.ECICountries_ShortName,'Nouvelle valeur','ECICountries',:new.ECICountries_Id, Null,'Warning'); 
  20.   END;


Mais quand j'exécute :

Code :
  1. INSERT INTO ECICountries (ECICountries_ShortName, ECICountries_Name) 
  2. SELECT DISTINCT T1.ECICOUNTRIES_NAME, T1.ECICOUNTRIES_NAME 
  3. FROM ImportTable T1
  4. WHERE NOT EXISTS (SELECT * FROM ECICountries T2 WHERE T1.ECICOUNTRIES_NAME = T2.ECICountries_ShortName);


Sql+ me répond :

Citation :

INSERT INTO ECICountries (ECICountries_ShortName, ECICountries_Name)
             *
ERROR at line 1:
ORA-01400: cannot insert NULL into
("A013009"."ECICOUNTRIES"."ECICOUNTRIES_SHORTNAME" )


 
Or les valeurs nulles sont théoriquement traitées dans ce trigger before insert   :cry:  
Qu'en pensez-vous ?

mood
Publicité
Posté le 30-03-2004 à 09:56:23  profilanswer
 

n°687257
Agagax
Posté le 30-03-2004 à 12:45:20  profilanswer
 

Je n'ai pas trop cherché à voir le pourquoi du trigger mais dans ton test IF, utilise (:new.ECICountries_ShortName IS NULL).
Tout opérateur utilisé avec une valeur nulle retourne NULL, donc (:new.ECICountries_ShortName=NULL) retourne toujours NULL, quelle que soit la valeur de :new.ECICountries_ShortName.

n°687332
ludolitali​ano
Posté le 30-03-2004 à 14:11:02  profilanswer
 

Merci Agagax je vais essayé avec IS NULL !
Ca y est; j'ai essayé; le trigger se compile bien sans erreur mais je ne peux toujours pas faire un INSERT INTO avec des valeurs nulles.
Enfin je laisse la syntaxe IS NULL.


Message édité par ludolitaliano le 30-03-2004 à 14:12:43

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [ORACLE] Trigger bien compilé qui ne marche pas bien

 

Sujets relatifs
PHPmyadmin, comment ça marche[JS] window.close() sous Mozilla ça marche pas ?
remplacement de chaine de caractères replace ne marche pas(vb6)Oracle : Suvi de version des package & proc
[PHP-ORACLE] parcours des résultats d'une requête : première ligne non[RESOLU][ORACLE] Gestion des nouvelles valeurs à insérer
Problème de connection à une base de données Oracle[ORACLE] Trigger : Erreur "mutating table"
Limiter le nombre de lignes comptées par COUNT(*) [maj : ça marche !] 
Plus de sujets relatifs à : [ORACLE] Trigger bien compilé qui ne marche pas bien


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR