sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo evitar que PostgreSQL altere mis definiciones de SQL bien formateadas

Eso es un malentendido. Postgres no "altera el formato". La cadena SQL original simplemente no se almacena en absoluto .

La consulta se analiza y se vuelve a escribir y, según el tipo de consulta, se toman medidas. Por ejemplo , cuando creas vista , los resultados se almacenan en catálogos del sistema, en su mayoría pg_class y pg_rewrite .

También debe tener en cuenta que todos los identificadores se resuelven en el momento de la creación de un objeto de base de datos, tomando el actual search_path y visibilidad en la cuenta (enlace anticipado). La misma cadena de consulta puede significar algo diferente más adelante, si el entorno cambia de algún modo.

Lo que verá más adelante es un rediseño versión creada a partir de estas entradas. Hay algunas funciones integradas para ayudar con eso, pero depende en gran medida del cliente cómo formatear el código SQL de ingeniería inversa.

Funciones son una excepción (en parte). El cuerpo de la función se pasa como cadena y se guarda tal cual , exactamente como se aprobó, con (actualmente) solo pruebas de sintaxis superficiales y validación de objetos. Si desea una forma rápida de "guardar" una consulta, incluido su formato dentro de Postgres, puede usar una función PL/pgSQL, por ejemplo.

El enfoque general es tener un repositorio de código independiente como @Mike ya sugirió - o no preocuparse demasiado por el formato.