Mais si on se connecte à la db postgres, n'y aurait-il pas moyen d'exécuter ces commandes en faisant comprendre à la function qu'il ne s'agit pas d'une transaction.
Par ailleurs, un grand merci à Dalibo, pour la publication des formations !
]]>Pour être complet, CREATE DATABASE, CREATE TABLESPACE, DROP DATABASE et DROP TABLESPACE ne peuvent pas être utilisés dans une transaction. Ce sont les seules instructions de ce genre à ma connaissance.
]]>Je suis heureux qu'une telle tragédie ne vous fasse pas perdre le sourire...
Pourriez-vous me dire en deux mots les raisons pour lesquelles la chose est impossible ?
Il me souvient d'avoir eu des problèmes similaires en Oracle (il y a longtemps).
Par ailleurs, un grand merci à Dalibo pour l'organisation de certifications !
C'est un grand pas en avant !
]]>J'ai une fonction qui, entre autres, droppe une db et la recrée mais je reçois un message d'horreur !
CREATE OR REPLACE FUNCTION public.recreate_sdbx_user(
pg_user_name text)
RETURNS boolean
...
sql_stmt = 'drop database if exists sdbx_' || pg_user_name;
execute sql_stmt;
...
sql_stmt = 'create database sdbx_'
|| pg_user_name
|| ' template sdbx_generic '
|| ' tablespace sdbx;'
execute sql_stmt;
...
et je reçois le message
DROP DATABASE cannot run inside a transaction block
Que faire ,
Merci pour votre attention
]]>