PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Странно поведение в Postgresql

Вашата 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 и това няма да стане да ви направи приятели.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изброяване и превключване на бази данни в PostgreSQL

  2. Милисекунда разделителна способност на DateTime в Ruby

  3. PostgreSQL 9.3:Динамична въртяща се таблица

  4. PostgreSQL:Пълно текстово търсене - Как да търсите частични думи?

  5. Бавно хибернация за придобиване на Postgres връзка