L'auto-incrémentation sous Oracle ce déroule comme ceci :
Je veux incrémenter automatiquement mon champ EMPLOYEE_ID de ma tables EMPLOYEES :
je créé une séquence qui va gardé en mémoire le dernier identifiant créé :
Puis pour générer un nouvel identifiant pour un nouvel enregistrement il faut également créer un trigger qui pas ce charger de récupérer la valeur de la séquence.
Code : Sélectionner tout - Visualiser dans une fenêtre à part CREATE SEQUENCE EMPLOYEES_SEQ MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1;
Explication :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 create or replace trigger EXMPLOYEES_TRIG before insert on "EMPLOYEES" for each row begin select EMPLOYEES_SEQ.nextval into :NEW.EMPLOYEE_ID from dual; end;
Le trigger sera déclenché avant chaque nouvel insertion:
Puis il va faire un select sur la séquence pour récupérer le dernier ID créé et donner cette valeur au champ EMPLOYEE_ID :
Code : Sélectionner tout - Visualiser dans une fenêtre à part before insert on "EMPLOYEES"
Code : Sélectionner tout - Visualiser dans une fenêtre à part select EMPLOYEES_SEQ.nextval into :NEW.EMPLOYEE_ID from dual;
Partager