Bonjour à tous,
Je suis un cours sur Oracle et j'essaye de créer mon premier MCD en étoile. J'ai des clés primaires autoincrémentées (les séquences ont bien été créées) mais :
-J'ai été encouragé à utiliser un trigger de ce type :
Et je ne suis pas bien sûr de comprendre son utilité : je comprends qu'il doit avant l'insertion de chaque ligne réaliser un nextval sur ma séquence, est-ce bien ça ? J'ai suivi le modèle que j'ai vu et pourtant quand je l'exécute j'obtiens ces messages :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE OR REPLACE TRIGGER check_Commande BEFORE INSERT ON DWH_Commande FOR EACH ROW BEGIN SELECT DWH_Commande.nextval INTO :new.idCommande FROM dual; END;
Erreur(2,1): PL/SQL: SQL Statement ignored
Erreur(2,8): PL/SQL: ORA-02289: sequence does not exist (alors que je les ai bel et bien créées ! je les ai mêmes supprimées et recrées)
Erreur(2,21): PLS-00302: component 'NEXTVAL' must be declared
-Lorsque j'essaye d'insérer des données depuis une autre table que j'ai alimentée moi même depuis un fichier CSV (les données sont propres, j'ai vérifié, je procède avec ce script) :
Mais j'ai une erreur de type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 INSERT INTO DWH_Client(idClient, nom, prenom, statut, dateNaissance, adresse,codePostal,commune,pays,tel,mail) SELECT DISTINCT idClient.nextval, nomClient, prenomClient, typeClient, datteNaissanceClient, adrClient, codePostalClient, villeClient, paysClient, telClient, mailClient FROM SIO;
Erreur SQL : ORA-02287: sequence number not allowed here
Voici donc mes questions :
Ai-je bien compris comment fonctionnait ce trigger ? Si oui d'où viennent mes erreurs ?
Y-a-t-il un ordre à suivre ? Pour moi ça serait tables => séquences => triggers => insertion
Mes scripts sont-ils corrects ?
Comment gérer l'autoincrémentation lors de mon insertion de données (la colonne idClient n'existe pas dans ma table SIO) si la séquence n'est pas autorisée ?
Merci d'avance à ceux qui essayeront (et peut-être même réussiront!) à m'aider.
Bonne journée
Antaris
Partager