sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man förhindrar PostgreSQL från att ändra mina snyggt formaterade SQL-definitioner

Det är ett missförstånd. Postgres "ändrar inte formatet". Den ursprungliga SQL-strängen lagras helt enkelt inte överhuvudtaget .

Frågan tolkas och skrivs om och beroende på typen av fråga vidtas åtgärder. Till exempel , när du skapar vy , resultaten lagras i systemkataloger, mestadels pg_class och pg_rewrite .

Du måste också vara medveten om att alla identifierare löses vid skapande av ett databasobjekt, med den nuvarande search_path och synlighet beaktas (tidig bindning). Samma frågesträng kan betyda något annat senare, om miljön ändras på något sätt.

Det du ser senare är en omkonstruerad version byggd från dessa poster. Det finns några inbyggda funktioner a> för att hjälpa till med det, men det är till stor del upp till kunden hur man formaterar omvänd SQL-kod.

Funktioner är ett undantag (delvis). Funktionskroppen skickas som sträng och sparas som den är , exakt som godkänt, med (för närvarande) endast ytlig syntaxtestning och validering av objekt. Om du vill ha ett snabbt sätt att "spara" en fråga inklusive dess format i Postgres, kan du till exempel använda en PL/pgSQL-funktion.

Det allmänna tillvägagångssättet är att ha ett oberoende kodlager som @Mike redan föreslagit - eller att inte bry sig om formatet för mycket.



  1. Ignorera citattecken när du importerar en CSV-fil till PostgreSQL?

  2. Finjustering av Oracle DG40DBC

  3. Vad är skillnaden mellan CASE och IF i mysql

  4. MySQL, CONCAT, resultatet är null efter ett tag