Вашата update_tbl_point
функцията вероятно прави нещо подобно:
new.last_update = current_timestamp;
но трябва да използва new."Last_Update"
така че коригирайте функцията си за задействане.
Имената на колоните се нормализират до малки букви в PostgreSQL (обратно на това, което SQL стандартът казва, имайте предвид), но идентификаторите, които са в двойни кавички, запазват своя регистър:
Цитирането на идентификатор също го прави чувствителен към малки букви, докато имената без кавички винаги се сгъват до малки букви. Например, идентификаторите FOO, foo и "foo" се считат за еднакви от PostgreSQL, но "Foo" и "FOO" са различни от тези три и един от друг. (Сгъването на имена без кавички в малки букви в PostgreSQL е несъвместимо със стандарта SQL, който казва, че имената без кавички трябва да бъдат сгънати до главни букви. По този начин foo трябва да е еквивалентно на „FOO“, а не на „foo“ според стандарта. Ако ако искате да пишете преносими приложения, съветваме ви винаги да цитирате определено име или никога да не го цитирате.)
Така че, ако направите това:
create table pancakes (
Eggs integer not null
)
тогава можете да направите някое от следните:
update pancakes set eggs = 11;
update pancakes set Eggs = 11;
update pancakes set EGGS = 11;
и ще работи, защото и трите форми са нормализирани до eggs
. Въпреки това, ако направите това:
create table pancakes (
"Eggs" integer not null
)
тогава можете да направите това:
update pancakes set "Eggs" = 11;
но не и това:
update pancakes set eggs = 11;
Обичайната практика с PostgreSQL е да използвате идентификатори с малки букви навсякъде, така че да не се притеснявате за това. Бих препоръчал същата схема за именуване и в други бази данни, като се налага да цитирате всичко, просто ви оставя бъркотия от двойни кавички (стандартни), обратни точки (MySQL) и скоби (SQL Server) във вашия SQL и това няма да стане да ви направи приятели.