sql >> Database >  >> RDS >> PostgreSQL

schema's gebruiken in postgresql

De parameter die u zoekt is search_path - dat een lijst geeft van de schema's waarin een zoekopdracht zal kijken. U kunt dus iets doen als:

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

Houd er rekening mee dat als het plan van een query wordt opgeslagen in de hoofdtekst van foo(), u onverwachte resultaten kunt krijgen. Ik zou aanraden dat je altijd expliciet schema's vermeldt voor tabellen waarnaar verwezen wordt in plpgsql-functies als je gedupliceerde tabellen gebruikt. Als dit niet het geval is, zorg er dan voor dat u tests uitvoert om het gedrag te controleren met een veranderend zoekpad.

Oh - je kunt ook expliciet search_path instellen voor de body van een functie - zie de handleiding CREATE FUNCTION referentie voor details.




  1. MYSQL Update Trigger krijgt bijgewerkte rij-ID

  2. lees frame met sqlalchemy, mysql en panda's

  3. MYSQL verwijdert alle resultaten met count(*)=1

  4. Oproep naar een lidfunctie resultaat() met behulp van CodeIgniter