Seu
update_tbl_point
A função provavelmente está fazendo algo assim:new.last_update = current_timestamp;
mas deve estar usando
new."Last_Update"
então corrija sua função de gatilho. Os nomes das colunas são normalizados para minúsculas no PostgreSQL (o oposto do que o padrão SQL diz, lembre-se), mas os identificadores com aspas duplas mantêm suas maiúsculas:
A citação de um identificador também diferencia maiúsculas de minúsculas, enquanto os nomes sem aspas são sempre dobrados para letras minúsculas. Por exemplo, os identificadores FOO, foo e "foo" são considerados iguais pelo PostgreSQL, mas "Foo" e "FOO" são diferentes desses três e um do outro. (A dobragem de nomes sem aspas para letras minúsculas no PostgreSQL é incompatível com o padrão SQL, que diz que nomes sem aspas devem ser dobrados para letras maiúsculas. Assim, foo deve ser equivalente a "FOO" e não "foo" de acordo com o padrão. Se você deseja escrever aplicativos portáteis, é aconselhável sempre citar um nome específico ou nunca citá-lo.)
Então, se você fizer isso:
create table pancakes (
Eggs integer not null
)
então você pode fazer qualquer um destes:
update pancakes set eggs = 11;
update pancakes set Eggs = 11;
update pancakes set EGGS = 11;
e funcionará porque todas as três formas são normalizadas para
eggs
. No entanto, se você fizer isso:create table pancakes (
"Eggs" integer not null
)
então você pode fazer isso:
update pancakes set "Eggs" = 11;
mas não isso:
update pancakes set eggs = 11;
A prática usual com o PostgreSQL é usar identificadores minúsculos em todos os lugares para que você não precise se preocupar com isso. Eu recomendaria o mesmo esquema de nomenclatura em outros bancos de dados também, ter que citar tudo apenas deixa você com uma bagunça de aspas duplas (padrão), backticks (MySQL) e colchetes (SQL Server) em seu SQL e isso não vai te fazer amigos.