Script pl/sql transactionnel/safe

De Vincent Chabanis dans Technique

3 mai 2012

Voila un script qui vous permettra de faire de l’insert/update de masse, sans craindre de casser toute la prod. Si la moindre erreur survient, tout le script est annulé, et une exception est levée.

Attention : ce script ne fonctionne pas pour les instructions ALTER TABLE et CREATE, puisqu’elles mettent fin a la transaction en cours.

 

PgSQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DECLARE
-- si jamais vous avez des variables a declarer
my_var INTEGER;
BEGIN
SAVEPOINT A;
-- votre script commence ici
SELECT count(*) INTO my_var FROM some_data_table;
INSERT INTO statistic_table (id, data_count) VALUES (sequence.nextval, my_var);
-- et fini ici
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK TO SAVEPOINT A;
COMMIT
RAISE;
END;

Commentaire

neuf × 7 =

iMDEO recrute !

REJOIGNEZ-NOUS

A la recherche de nouveaux talents (développeurs web et mobile, chefs de projet,...)

Voir les annonces