Bonjour !!!

Voila, j'ai une table dont la clé primaire est une séquence.
Lorsqu'elle est vide, j'utilise SQLLoader pour la re-remplir.
Il faut donc, apres le "load data", que maSequence.CURRVAL vaille la valeur de la plus grande clé primaire de maTable.
J'ai fait un TRIGGER qui, pour chaque insertion, prend la valeur de la sequence et l'incrémente tant que la clé primaire insérée est plus grande:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
  select maSequence.CURRVAL into sequence FROM DUAL;
  IF INSERTING THEN
    WHILE (:NEW.maPK>sequence) LOOP
      select maSequence.NEXTVAL into sequence FROM DUAL;
    END LOOP;
  END IF;
Mais lorsque je lance SQLLoader, j'ai une erreur:
ORA-08002: séquence maSequence.CURRVAL pas encore définie dans cette session.
+ des erreurs disant que le trigger s'est interrompu

Je suis aller en SQLPlus faire quelques "select maSequence.NEXTVAL FROM DUAL" histoire de faire avancer la sequence mais ca ne change rien, SQLLoader ne fonctionne pas.
Par contre, je peux faire des insertions en PHP.

J'ai également fais des insertion en PHP, sans avoir initialiser la sequence en SQLPlus mais si je fais "select maSequence.CURRVAL FROM DUAL" en SQLPlus, la sequence n'est pas définie...

Voila si qqun sait me dire pourquoi maSequence n'est pas définie partout...

Merchi :o

Note: je suis en 9i pour Oracle...