Tengo un requisito en el que tengo que crear una nueva base de datos en el servidor PostgreSQL para cada usuario que inicie sesión. Por lo tanto, 1 base de datos por usuario. Además, esa base de datos tendrá pocas funciones definidas personalizadas que se llamarán. Quiero automatizar este proceso de creación de funciones definidas personalizadas tan pronto como cree una base de datos. Para que no tenga que ir explícitamente y ejecutar la función en cada base de datos.
es posible?
De documentos :
CREATE DATABASE en realidad funciona copiando una base de datos existente. De forma predeterminada, copia la base de datos del sistema estándar denominada template1. Por lo tanto, esa base de datos es la "plantilla" a partir de la cual se crean nuevas bases de datos. Si agrega objetos a la plantilla 1, estos objetos se copiarán en bases de datos de usuario creadas posteriormente. Este comportamiento permite modificaciones locales del sitio al conjunto estándar de objetos en las bases de datos. Por ejemplo, si instala el lenguaje de procedimiento PL/Perl en la plantilla 1, estará disponible automáticamente en las bases de datos de los usuarios sin que se realice ninguna acción adicional cuando se creen esas bases de datos.
Entonces puede crear objetos "predeterminados" en template1 db y "clonarlos". O puede crear todas las relaciones necesarias (tablas, funciones, etc.) en la base de datos de muestra y luego "clonarla" con
create database new_db with template sample_db;De la misma manera, puede crear varias bases de datos de plantilla con diferentes objetos creados previamente "predeterminados" y simplemente "clonarlos" según sea necesario.
Lea los documentos anteriores sobre limitaciones, etc.
La actualización Agregar objetos de Postgres a la plantilla 1 le mostrará cómo hacerlo con pgadmin