PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

utiliser des schémas dans postgresql

Le paramètre que vous recherchez est search_path - qui répertorie les schémas dans lesquels une requête va rechercher. Vous pouvez donc faire quelque chose comme :

CREATE TABLE schema1.tt ...
CREATE TABLE schema2.tt ...
CREATE FUNCTION schema1.foo() ...
CREATE FUNCTION schema2.foo() ...
SET search_path = schema1, something_else;
SELECT * FROM tt;        -- schema1.tt
SELECT * FROM schema2.tt -- schema2.tt
SELECT foo();            -- calls schema1.foo
SELECT schema2.foo();    -- calls schema2.foo

Notez que si le plan d'une requête est enregistré dans le corps de foo(), vous pouvez obtenir des résultats inattendus. Je vous recommande de toujours lister explicitement les schémas des tables référencées dans les fonctions plpgsql si vous utilisez des tables dupliquées. Si ce n'est pas le cas, assurez-vous d'avoir mis en place des tests pour vérifier le comportement avec un search_path changeant.

Oh - vous pouvez également définir explicitement search_path pour le corps d'une fonction - voir la référence CREATE FUNCTION du manuel pour plus de détails.