Bonjour,
Dans le cadre (encore) d'une migration mysql->oracle, je me retrouve avec des requetes qui ont cette tête là :
Ou est le problème me direz vous ? Eh bien il est dans le fait que la table contient un champs "id" en auto incrément. Sous MySQL, pas de soucis, le champs "id" se remplis. Par contre, sous oracle, il me sort :
Code : Sélectionner tout - Visualiser dans une fenêtre à part INSERT INTO f_component (champ1 , champ2) VALUES ('valeur1', 'valeur2');
Normal, l'id n'étant pas renseigné, ca part en vrille.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ORA-00001: unique constraint (DEV.SYS_C005645) violated
Alors, malin, j'ai fait une ptite séquence, et un ptit trigger genre :
Mais ca ne marche pas non plus. Apparament, le trigger a l'air de remplacer l'id qu'on lui passe dans la requete, mais dans la mesure ou l'id n'est pas passé dans l'insert, le trigger ne se déclenche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 CREATE SEQUENCE seq_component_id; CREATE TABLE f_component ( id number(21) NOT NULL, champ1 varchar2(64) NOT NULL, champ2 varchar2(64) NOT NULL, PRIMARY KEY (id) ); CREATE OR REPLACE TRIGGER trg_component_id BEFORE INSERT ON f_component FOR EACH ROW BEGIN SELECT seq_component_id.nextval INTO :new.id from dual; END; /
Il y a une solution ? (à part recoder l'application ^^)
Merci d'avance ^_^
Partager