sql >> Databasteknik >  >> RDS >> PostgreSQL

använder scheman i postgresql

Parametern du letar efter är search_path - som listar de scheman som en fråga kommer att titta i. Så du kan göra något 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

Observera att om en frågas plan sparas inuti foo() så kan du få oväntade resultat. Jag skulle rekommendera att du alltid explicit listar scheman för refererade tabeller i plpgsql-funktioner om du använder duplicerade tabeller. Om inte, se till att du har tester på plats för att kontrollera beteendet med en växlande sökväg.

Åh - du kan uttryckligen ställa in sökväg för en funktions kropp också - se manualens CREATE FUNCTION-referens för detaljer.




  1. Hur man exporterar brytraden '\n' i en fil med MySQL TILL UTFIL

  2. Postgres stänger anslutningen under fråga efter några hundra sekunder när Psycopg2 används

  3. Hur man fixar 'java.lang.ClassNotFoundException:com.mysql.jdbc.Driver' efter att ha lagt till det i byggsökvägen och registrerats med Class.forName();

  4. Postgres UUID och Hibernate → ingen kolumn hittades