SQLCOD -803 (clé en double) alors que enregistrement tout de même écrit
Citation de tomdarbon le 11 mars 2019, 15 h 40 minBonjour,
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,
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.
Citation de larry57 le 12 mars 2019, 8 h 55 minBonjour,
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
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