PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

използване на схеми в postgresql

Параметърът, който търсите, е search_path - който изброява схемите, в които ще търси заявката. Така че можете да направите нещо като:

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

Имайте предвид, че ако планът на заявка бъде запазен в тялото на foo(), тогава може да получите неочаквани резултати. Бих препоръчал винаги изрично да изброявате схеми за референтни таблици във функциите на plpgsql, ако използвате дублирани таблици. Ако не, уверете се, че разполагате с тестване, за да проверите поведението с променящ се search_path.

О, можете изрично да зададете search_path и за тялото на функцията - вижте справката CREATE FUNCTION в ръководството за подробности.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. разделяне на редове в Redshift

  2. Как да направя INTERSECT с помощта на Eloquent Builder, без да имам колекция

  3. Как да генерирам случаен, уникален, буквено-цифров идентификатор с дължина N в Postgres 9.6+?

  4. базата данни за преименуване на postgres не работи

  5. chmod og-rwx server.key в windows