Bonjour tout le monde,
j'ai un problème sur l'incrémentation d'une donnée dans ma base de données.
Notre chef a voulu changé le format d'une entrée dans la base de données pour que les utilisateurs ne puissent entrer n'importe quoi.
Du coup, cette référence repose sur plusieurs choses
1-La première partie repose sur la clé (4 chiffres)
2-La deuxième partie repose sur la date du jour à l'envers
3-La dernière partie est un compteur sur 2 chiffres
Tout ceci donne par exemple comme référence :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
7000_2010-12-21_01
A chaque insertion sur la clé, le compteur s'incrémente et peut atteindre 99 chaque jour.
J'ai essayé ceci :

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
17
18
19
20
21
$req = "SELECT REFERENCE FROM NOTE WHERE CLE ='".$_POST['cle']."'";
			$s_req = oci_parse($ora_conn,$req);
			oci_execute($s_req);
			$debut = substr($reference,0,9);
			$milieu = substr($reference,9,8);
			$fin = substr($reference,17);
			while($row=oci_fetch_array($s_req,OCI_NUM))
			{
			if($reference == $row[0])
			{
			$fin = $fin + 1;
			$reference = $debut.$milieu.$fin;
			}
			}
			else
			{
			$reference = $reference;
			}
			}
 
			oci_free_statement($s_req);
Mais à la troisième enregistrement, il y a erreur, violation de la clé primaire. Je ne peux pas utiliser les triggers ni les séquences puisqu'avant il y a des références que les utilisateurs ont entré et qui n'ont pas le même schéma que la nouvelle référence.
Merci d'avance pour votre aide.