Fil d’Ariane du forum – Vous êtes ici :ForumForums techniques: AS/400SQLCOD -803 (clé en double) alors …
Vous devez vous identifier pour créer des messages et des sujets.

SQLCOD -803 (clé en double) alors que enregistrement tout de même écrit

Bonjour,

Dans un programme SQLRPGLE, j'écris dans un fichier ayant été créé par CREATE TABLE, et possédant une contrainte de clé unique sur le champ nommé ID.

Je suis l'éxécution en Débug, en pas à pas.

Lorsque j'arrive sur l'instruction INSERT INTO, effectuée avec une valeur dans le champ ID qui n'existe pas dans le fichier cible, je constate après éxécution que la ligne est bien créée dans le fichier, ce qui est donc normal.

En revanche, lorsque je teste le SQLCOD, il vaut -803, et dans la JOBLOG j'ai un message de clé en double.

Je précise que la seule clause d'unicité sur ce fichier concerne le champ ID.

Ce SQLCOD est important dans mon programme car il me permet de savoir si un programme concurrent, écrivant dans le meme fichier, n'a pas déjà écrit une ligne avec le meme ID. Dans ce cas, je tente à nouveau l'écriture après avoir incrémenté de 1 le ID, et ce jusqu'à ce que je n'aie plus de SQLCOD=-803.

Pourquoi ai-je ce SQLCOD -803, alors que l'écriture a fonctionné ?

D'avance merci.

Bonjour,

SI tu veux bien faire, dans ta  requête SQL, pour gérer ton ID, tu mets un MAX(ID) + 1 qui te permettra de résoudre ton problème.

 

Larry57