sql >> Database >  >> RDS >> PostgreSQL

Hoe te voorkomen dat PostgreSQL mijn mooi opgemaakte SQL-definities wijzigt

Dat is een misverstand. Postgres "wijzigt het formaat niet". De originele SQL-string wordt gewoon helemaal niet opgeslagen .

De query wordt ontleed en herschreven en afhankelijk van het soort query wordt actie ondernomen. Bijvoorbeeld , wanneer u een weergave . maakt , worden de resultaten opgeslagen in systeemcatalogi, meestal pg_class en pg_rewrite .

U moet zich er ook van bewust zijn dat alle id's worden opgelost tijdens het maken van een databaseobject, waarbij de huidige search_path en zichtbaarheid in aanmerking (early binding). Dezelfde queryreeks kan later iets anders betekenen, als de omgeving op enigerlei wijze verandert.

Wat je later ziet, is een opnieuw ontworpen versie gebouwd op basis van deze items. Er zijn enkele ingebouwde functies om daarbij te helpen, maar het is grotendeels aan de klant hoe reverse-engineering SQL-code moet worden geformatteerd.

Functies zijn (deels) een uitzondering. De hoofdtekst van de functie wordt doorgegeven als string en opgeslagen zoals het is , precies zoals doorgegeven, met (momenteel) alleen oppervlakkige syntaxistests en validatie van objecten. Als u een snelle manier wilt om een ​​query, inclusief het formaat ervan, in Postgres te "opslaan", kunt u bijvoorbeeld een PL/pgSQL-functie gebruiken.

De algemene benadering is om een ​​onafhankelijke coderepository te hebben zoals @Mike al voorgesteld - of niet te veel om het formaat te geven.



  1. Laravel Query Builder WHERE NOT IN

  2. Een databaseback-up herstellen in OpenCart 1.5

  3. Hoe afbeeldingen uit een tabel met andere kolomteksten te halen met behulp van PHP

  4. Een primaire sleutel voor automatische verhoging definiëren in SQL Server