PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment empêcher PostgreSQL de modifier mes définitions SQL bien formatées

C'est un malentendu. Postgres ne "modifie pas le format". La chaîne SQL d'origine n'est tout simplement pas stockée du tout .

La requête est analysée et réécrite et, selon le type de requête, une action est entreprise. Par exemple , lorsque vous créez une vue , les résultats sont stockés dans des catalogues système, principalement pg_class et pg_rewrite .

Vous devez également être conscient que tous les identifiants sont résolus au moment de la création d'un objet de base de données, en prenant le courant search_path et la visibilité en compte (liaison anticipée). La même chaîne de requête peut signifier quelque chose de différent plus tard, si l'environnement change de quelque manière que ce soit.

Ce que vous voyez plus tard est une refonte version construite à partir de ces entrées. un> pour aider à cela, mais c'est en grande partie au client comment formater le code SQL rétro-conçu.

Fonctions font exception (en partie). Le corps de la fonction est passé sous forme de chaîne et enregistré tel quel , exactement comme passé, avec (actuellement) uniquement des tests de syntaxe superficiels et une validation des objets. Si vous voulez un moyen rapide de "sauvegarder" une requête, y compris son format dans Postgres, vous pouvez utiliser une fonction PL/pgSQL, par exemple.

L'approche générale est d'avoir un dépôt de code indépendant comme @Mike déjà suggéré - ou ne pas trop se soucier du format.