Bonjour,

Dans le cadre (encore) d'une migration mysql->oracle, je me retrouve avec des requetes qui ont cette tête là :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
 INSERT INTO f_component (champ1 , champ2) VALUES ('valeur1', 'valeur2');
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
ORA-00001: unique constraint (DEV.SYS_C005645) violated
Normal, l'id n'étant pas renseigné, ca part en vrille.

Alors, malin, j'ai fait une ptite séquence, et un ptit trigger genre :

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;
/
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.

Il y a une solution ? (à part recoder l'application ^^)

Merci d'avance ^_^