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

Hvordan gør man, at en udvidelse ikke kan flyttes?

Først skal du ændre relocatable til false i udvidelsens kontrolfil.

Bortset fra det er den anbefaling, du fik, dels fornuftig og dels nonsens.

Du bør definere dine funktioner sådan her:

CREATE FUNCTION .... AS
$$ /* function body */ $$
SET search_path = @[email protected];

Derefter search_path er rettet til pg_catalog , pg_temp og dit udvidelsesskema i funktionskaldets varighed. Det betyder, at al adgang til objekter uden et eksplicit skema kun vil søge i disse skemaer.

Så behøver du ikke bekymre dig om eksplicit at kvalificere alt i funktionen med @[email protected] , og du kan bruge operatorer uden at skulle bekymre dig, fordi search_path gælder også for operatører. (Du kan også skemakvalificere operatorer:OPERATOR(schema.+) , men det er naturligvis smertefuldt og skader læsbarheden.)




  1. Hvad er nogle måder at få adgang til Microsoft SQL Server fra Linux?

  2. Hvad er MariaDB Enterprise Cluster?

  3. MySQL får manglende ID'er fra tabellen

  4. Hvordan Substr() virker i SQLite