Simulation INSERT IGNORE avec WHEN SQLCODE -803 DO
Bonjour,
Je voudrais simuler le comportement de l'instruction INSERT IGNORE de MySQL dans Firebird.
J'ai une table qui contient un id auto incrémenté et 2 champs entier, value_A et value_B. J'ai définie une contrainte d'unicité sur {valeur_A , valeur_B}.
Le comportement souhaité est le suivant :
J’insère respectivement les valeurs 2 et 5 dans les champs valeur_A et valeur_B et je retourne l'id créé. Si la requête provoque une violation de la contrainte d'unicité (erreur 803), alors je sélectionne l'id dont les champs valeur_A et valeur_B valent respectivement 2 et 5.
Concrètement, j'en arrives à la requête suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| EXECUTE block AS BEGIN
INSERT
INTO "table"(
"valeur_A",
"valeur_B"
)VALUES(
2,
5
)RETURNING "id";
WHEN SQLCODE -803 DO
SELECT "id"
FROM "table"
WHERE "valeur_A"=2
AND "valeur_B"=5;
END |
Problème, il me dit
Citation:
"SQL error code = -104. Token unknown - line 14, column 27. ;."
Et je ne comprends pas pourquoi il me dit que le dernier ; est invalide (et si je l'enlève, il me dit que c'est END qui est invalide, ce qui me parait logique).
Merci ^^