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

Come impedire a PostgreSQL di alterare le mie definizioni SQL ben formattate

Questo è un malinteso. Postgres non "altera il formato". La stringa SQL originale semplicemente non viene memorizzata per niente .

La query viene analizzata e riscritta e, a seconda del tipo di query, viene eseguita un'azione. Ad esempio , quando crei una vista , i risultati vengono archiviati nei cataloghi di sistema, principalmente pg_class e pg_rewrite .

È inoltre necessario essere consapevoli del fatto che tutti gli identificatori vengono risolti al momento della creazione di un oggetto database, prendendo l'attuale search_path e visibilità (early binding). La stessa stringa di query può significare qualcosa di diverso in seguito, se l'ambiente cambia in qualche modo.

Quello che vedrai in seguito è un riprogettato versione costruita da queste voci. Ci sono alcune funzioni integrate per aiutare in questo, ma dipende in gran parte dal client come formattare il codice SQL con reverse engineering.

Funzioni sono un'eccezione (in parte). Il corpo della funzione viene passato come stringa e salvato com'è , esattamente come superato, con (attualmente) solo test di sintassi superficiale e validazione degli oggetti. Se vuoi un modo rapido per "salvare" una query che includa il suo formato all'interno di Postgres, puoi usare una funzione PL/pgSQL, per esempio.

L'approccio generale consiste nell'avere un repository di codice indipendente come @Mike già suggerito - o non preoccuparsi troppo del formato.