Váš update_tbl_point
funkce pravděpodobně dělá něco takového:
new.last_update = current_timestamp;
ale měl by používat new."Last_Update"
tak opravte svou funkci spouštění.
Názvy sloupců jsou v PostgreSQL normalizovány na malá písmena (opak toho, co říká standard SQL mind you), ale identifikátory, které jsou v uvozovkách, si zachovávají velikost písmen:
Uvozováním identifikátoru se také rozlišují velká a malá písmena, zatímco jména neuvedená v uvozovkách jsou vždy složena na malá písmena. Například identifikátory FOO, foo a "foo" jsou PostgreSQL považovány za stejné, ale "Foo" a "FOO" se od těchto tří a navzájem liší. (Skládání jmen v uvozovkách na malá písmena v PostgreSQL je nekompatibilní se standardem SQL, který říká, že jména v uvozovkách by se měla skládat na velká písmena. Foo by tedy podle standardu mělo být ekvivalentní "FOO", nikoli "foo". chcete-li psát přenosné aplikace, doporučujeme vždy citovat konkrétní jméno nebo jej nikdy neuvádět.)
Takže, pokud uděláte toto:
create table pancakes (
Eggs integer not null
)
pak můžete provést kterékoli z těchto:
update pancakes set eggs = 11;
update pancakes set Eggs = 11;
update pancakes set EGGS = 11;
a bude to fungovat, protože všechny tři formy jsou normalizovány na eggs
. Pokud však uděláte toto:
create table pancakes (
"Eggs" integer not null
)
pak můžete udělat toto:
update pancakes set "Eggs" = 11;
ale ne toto:
update pancakes set eggs = 11;
Obvyklou praxí u PostgreSQL je všude používat malá písmena, abyste se o to nemuseli starat. Doporučil bych stejné schéma pojmenování i v jiných databázích, když budete muset vše citovat, budete mít ve vašem SQL jen změť dvojitých uvozovek (standardní), zpětných zatržení (MySQL) a hranatých závorek (SQL Server), a to nebude udělat si přátele.