Bonjour,
J'ai une table tout simple (fonctions_generiques) avec quelques champs, dont un champs IDFG en NUMBER de précision 5, qui est l'ID de chaque ligne en clé primaire de la table.
Je voudrais en faire un auto increment comme sur MySQL.
Après avoir faire quelques recherches j'ai donc utilisé une séquence et un trigger qui sont :
et :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CREATE SEQUENCE sequencefg START WITH 1 INCREMENT BY 1;
Et voici ma requête d'insertion (en PHP grâce à PDO) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE OR REPLACE TRIGGER incrementfg BEFORE INSERT ON fonctions_generiques FOR EACH ROW BEGIN SELECT sequencefg.nextval INTO :NEW.idfg FROM dual; END;
Que je mette le champs idfg vide ('') ou sequencefg.nextval, j'ai cette erreur qui apparait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 $req = $bdd->prepare('INSERT INTO FONCTIONS_GENERIQUES VALUES(\'\', :code_fonction, :code_contrat, :code_generique, :quantite, :frequence, :datedeb, :datefin, :identifiant, :date_modif)'); $req->execute(array('code_fonction' => $_POST['code_fonction'], 'code_contrat' => $_POST['code_contrat'], 'code_generique' => $_POST['code_generique'], 'quantite' => $_POST['quantite'], 'frequence' => $_POST['frequence'], 'datedeb' => timestamp($_POST['datedeb']), 'datefin' => timestamp($_POST['datefin']), 'identifiant' => $_SESSION['user']['identifiant'], 'date_modif' => time() )) or die(print_r($bdd->errorInfo()));
Et si je ne mentionne rien devant :code_fonction en ignorant l'id, comme le montrent certains exemples, il m'affiche une erreur du même style : nombre de paramètres insuffisants (ou quelques comme comme ça).Array ( [0] => HY000 [1] => 1722 [2] => OCIStmtExecute: ORA-01722: Nombre non valide (ext\pdo_oci\oci_statement.c:146) ) 1
Sauriez-vous d'où peut venir ce problème ?
Partager