sql >> Database teknologi >  >> RDS >> PostgreSQL

ved hjælp af skemaer i postgresql

Den parameter, du leder efter, er search_path - der viser de skemaer, en forespørgsel vil kigge i. Så du kan gøre noget som:

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

Bemærk, at hvis en forespørgsels plan bliver gemt inde i foo(), så kan du få uventede resultater. Jeg vil anbefale, at du altid eksplicit angiver skemaer for refererede tabeller i plpgsql-funktioner, hvis du bruger duplikerede tabeller. Hvis ikke, så sørg for, at du har test på plads for at kontrollere adfærd med en ændrende søgesti.

Åh - du kan også udtrykkeligt indstille search_path for en funktions krop - se manualens CREATE FUNCTION reference for detaljer.




  1. Hvordan fungerer SQL LIKE egentlig

  2. MariaDB ROUND() vs TRUNCATE()

  3. Hvordan læser og opdaterer jeg SQLite-database ved hjælp af ListView i Android?

  4. UNIX_TIMESTAMP() Eksempler – MySQL