J'ai deux problèmes
Le premier est que je ne parviens pas à réaliser un delete dans un 'with recursive'. J'ai testé avec un delete simple qui fonctionne hors du 'with recursive'.
Y a-t-il quelque chose de spécial à faire?
Le second est l'utilisation du case.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 WITH RECURSIVE ... DELETE FROM frame WHERE framename = 'test'
Ce que j'essaye de faire dans l'exmple ci-dessous est:
si il y a des 'parentouside' renvoyer la liste des 'parentoutside'
sinon si il y a des 'lockedframes' renvoyer la liste des 'lockedframes'
sinon renvoyer une liste d'entrées (ou mieux les effacer, mais voir premier problème).
Le case en lui-même fonctionne: Si je remplace ce qui est en vert par des 'select count' je n'ai pas d'erreur.
Merci pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 WITH RECURSIVE ... SELECT CASE WHEN (SELECT COUNT (*) FROM parentoutside) > 0 THEN (SELECT * FROM parentoutside) WHEN (SELECT COUNT (*) FROM lockedframes) > 0 THEN (SELECT * FROM lockedframes) ELSE (SELECT * FROM frame WHERE framename in (select childname from allchildswithframe )) END;
Partager