Bonjour,
Pour compléter le tableau suivant :
champ1|champ2|...|prix|nouveau_Prix
.|.|...|45|40
...
J'ai le scénario suivant :
Je rollback parce que je ne veux pas supprimer mes lignes, je veux seulement comparer le prix avant et après le nettoyage et voir s'il change ou pas.
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 -- 01 : avant delete select * from table1 where id = 1; id prix 1 45 1 62 1 50 -- 02 : apres delete delete from table2 where id = 1; select * from table1 where id = 1; id prix 1 40 1 62 1 50 rollback;
Dans mon exemple ci-dessus le prix change pour une seule ligne et ce n'est pas toujours la première (je ne peux pas savoir laquelle qui change), ça peut être la 2eme ou la 3 eme ...
sachant que j'ai 10000 id, ma première requête me renvoie pour chaque id 5 ou 6 lignes, du coup 10000 * 5 ou 6 lignes au final.
Je dois faire tout ça pour mes 10000 id du coup mon idée c'est de créer 2 tables temporaires, une pour sauvegarder l'état avant delete et l'autre après.
Ensuite je compare les deux tables (tmp_before_table1 et tmp_after_table2) pour récupérer le prix qui change.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 -- 01 : avant delete create table tmp_before_table1 as select * from table1 where id in (1,2,3,.....); -- 02 : apres delete delete from table2 where id in (1,2,3,.....); insert into tmp_after_table2 select * from table1 where id in (1,2,3,.....); rollback;
sauf que dans la deuxième étape si je rollback alors ma seconde table (tmp_after_table2) sera vide et je ne peux pas la comparer avec la première.
J'ai pas d'autres idées c'est pour ça je suis la pour voir si mon idée tient la route et/ou si vous en avez d'autres?
Merci d'avance.
Partager