una tipos seleccion poner nombre ejemplos dinamico consultas consulta columna cambiar sql postgresql jodd

sql - tipos - Postgres no aceptará el alias de la tabla antes del nombre de la columna



poner nombre a una consulta en sql (3)

Consulte la documentación en la instrucción UPDATE , específicamente para la parte de la columna : es ilegal prefijar columnas con alias de tabla en la cláusula SET .

UPDATE GREETING Greeting SET ID=5, NAME=''World'', PHRASE=''Hello World!'' WHERE (Greeting.ID=5);

Estoy usando un marco (Jodd) que agrega el alias de tabla a los nombres de columna en una Selección SQL. Parece un SQL bien formado, pero Postgres se ahoga con eso.

update GREETING Greeting set Greeting.ID=5, Greeting.NAME=''World'', Greeting.PHRASE=''Hello World!'' where (Greeting.ID=5)

da un error:

Error: ERROR: column "greeting" of relation "greeting" does not exist SQLState: 42703

¿Hay alguna manera de hacer que Postgres acepte ese SQL? Mi otra alternativa es hackear el framework, lo que no quiero hacer.


El problema es que incluye el alias de la tabla en la cláusula SET , en las columnas. Vea la documentación de UPDATE en los documentos de Postgres :

column

El nombre de una columna en la table . El nombre de la columna se puede calificar con un nombre de subcampo o subíndice de matriz, si es necesario. No incluya el nombre de la tabla en la especificación de una columna de destino; por ejemplo, la UPDATE tab SET tab.col = 1 no es válida.

Esto es válido en Postgres:

update GREETING Greeting set NAME=''World'', PHRASE=''Hello World!'' where Greeting.ID=5 ;


Trate de usar el último Jodd, v3.3.7. donde este problema es arreglado

El problema estaba en la biblioteca Jodd: los métodos de actualización de la entidad generaban una instrucción de actualización con alias de tablas. La nueva versión simplemente no pone alias de tabla; Eso funciona para Postgres y para otras bases de datos también.