PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Dziwne zachowanie w Postgresql

Twój update_tbl_point funkcja prawdopodobnie robi coś takiego:

new.last_update = current_timestamp;

ale powinien używać new."Last_Update" więc napraw funkcję wyzwalacza.

Nazwy kolumn są znormalizowane do małych liter w PostgreSQL (przeciwieństwo tego, co mówi standard SQL), ale identyfikatory w cudzysłowie zachowują swoje litery:

Cytowanie identyfikatora sprawia, że ​​rozróżniana jest wielkość liter, podczas gdy nazwy niecytowane są zawsze składane małymi literami. Na przykład identyfikatory FOO, foo i „foo” są traktowane przez PostgreSQL jako takie same, ale „Foo” i „FOO” różnią się od tych trzech i od siebie nawzajem. (Zwijanie nazw niecytowanych na małe litery w PostgreSQL jest niezgodne ze standardem SQL, który mówi, że nazwy bez cudzysłowów powinny być składane do wielkich liter. Zatem foo powinno być równoważne „FOO”, a nie „foo” zgodnie ze standardem. Jeśli jeśli chcesz pisać aplikacje przenośne, radzimy zawsze cytować określoną nazwę lub nigdy jej nie cytować.)

Jeśli więc to zrobisz:

create table pancakes (
    Eggs integer not null
)

wtedy możesz wykonać dowolne z tych czynności:

update pancakes set eggs = 11;
update pancakes set Eggs = 11;
update pancakes set EGGS = 11;

i zadziała, ponieważ wszystkie trzy formularze są znormalizowane do eggs . Jeśli jednak to zrobisz:

create table pancakes (
    "Eggs" integer not null
)

możesz to zrobić:

update pancakes set "Eggs" = 11;

ale nie to:

update pancakes set eggs = 11;

Zwykła praktyka w PostgreSQL polega na używaniu wszędzie identyfikatorów pisanych małymi literami, aby nie trzeba było się tym martwić. Polecam ten sam schemat nazewnictwa również w innych bazach danych, ponieważ konieczność cytowania wszystkiego pozostawia po prostu bałagan podwójnych cudzysłowów (standard), backticków (MySQL) i nawiasów (SQL Server) w twoim SQL, a to nie będzie zaprzyjaźnić się z tobą.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak połączyć kolumny w Postgres SELECT?

  2. Oracle do PostgreSQL:ROZPOCZNIJ OD/POŁĄCZ PRZEZ

  3. gem install pg nie może powiązać z libpq

  4. Jak stworzyć użytkownika w PostgreSQL

  5. Jak mogę zmienić istniejącą kolumnę jako Tożsamość w PostgreSQL 11.1?