PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak zapobiec zmienianiu przez PostgreSQL moich ładnie sformatowanych definicji SQL?

To nieporozumienie. Postgres nie „zmienia formatu”. Oryginalny ciąg SQL po prostu nie jest przechowywany w ogóle .

Zapytanie jest analizowane i przepisywane iw zależności od rodzaju zapytania podejmowane są działania. Na przykład , podczas tworzenia widoku , wyniki są przechowywane w katalogach systemowych, głównie pg_class i pg_rewrite .

Musisz również mieć świadomość, że wszystkie identyfikatory są rozwiązywane w czasie tworzenia obiektu bazy danych, biorąc bieżące search_path i widoczność pod uwagę (wczesne wiązanie). Ten sam ciąg zapytania może później oznaczać coś innego, jeśli środowisko zmieni się w jakikolwiek sposób.

To, co zobaczysz później, to przeprojektowany wersja zbudowana z tych wpisów. Istnieje kilka funkcje wbudowane aby w tym pomóc, ale w dużej mierze od klienta zależy, jak sformatować kod SQL poddany inżynierii wstecznej.

Funkcje są wyjątkiem (częściowo). Treść funkcji jest przekazywana jako ciąg znaków i zapisywana tak jak jest , dokładnie tak, jak przeszło, z (obecnie) tylko powierzchownym testowaniem składni i walidacją obiektów. Jeśli chcesz w szybki sposób "zapisać" zapytanie, w tym jego format w Postgresie, możesz na przykład użyć funkcji PL/pgSQL.

Ogólnym podejściem jest posiadanie niezależnego repozytorium kodu, takiego jak @Mike już sugerował - lub nie dbać zbytnio o format.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy możesz utworzyć indeks w definicji CREATE TABLE?

  2. Hibernate @Filter kolekcja wyliczeń

  3. Czy powinienem określić zarówno INDEX, jak i UNIQUE INDEX?

  4. co oznacza ten błąd postgres:ROWS nie ma zastosowania, gdy funkcja nie zwraca zestawu?

  5. Jak włączyć profiler funkcji PostgreSQL?