PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Hành vi kỳ lạ trong Postgresql

update_tbl_point của bạn chức năng có thể đang làm một cái gì đó như thế này:

new.last_update = current_timestamp;

nhưng phải sử dụng new."Last_Update" vì vậy hãy sửa chức năng kích hoạt của bạn.

Tên cột được chuẩn hóa thành chữ thường trong PostgreSQL (ngược lại với những gì tiêu chuẩn SQL nói với bạn) nhưng các số nhận dạng được trích dẫn kép duy trì trường hợp của chúng:

Trích dẫn một số nhận dạng cũng làm cho nó phân biệt chữ hoa chữ thường, trong khi các tên không được trích dẫn luôn được xếp thành chữ thường. Ví dụ:các mã định danh FOO, foo và "foo" được PostgreSQL coi là giống nhau, nhưng "Foo" và "FOO" khác với ba mã này và lẫn nhau. (Việc gấp các tên chưa được trích dẫn thành chữ thường trong PostgreSQL không tương thích với tiêu chuẩn SQL, điều này nói rằng các tên không được trích dẫn phải được xếp thành chữ hoa. Do đó, foo phải tương đương với "FOO" chứ không phải "foo" theo tiêu chuẩn. Nếu bạn muốn viết các ứng dụng di động, bạn nên luôn trích dẫn một tên cụ thể hoặc không bao giờ trích dẫn nó.)

Vì vậy, nếu bạn làm điều này:

create table pancakes (
    Eggs integer not null
)

thì bạn có thể làm bất kỳ điều nào sau đây:

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

và nó sẽ hoạt động vì cả ba biểu mẫu đều được chuẩn hóa thành eggs . Tuy nhiên, nếu bạn làm điều này:

create table pancakes (
    "Eggs" integer not null
)

thì bạn có thể làm điều này:

update pancakes set "Eggs" = 11;

nhưng không phải cái này:

update pancakes set eggs = 11;

Thực tiễn thông thường với PostgreSQL là sử dụng các mã định danh chữ thường ở mọi nơi để bạn không phải lo lắng về điều đó. Tôi cũng khuyên bạn nên sử dụng lược đồ đặt tên tương tự trong các cơ sở dữ liệu khác, việc phải trích dẫn mọi thứ chỉ khiến bạn có một mớ hỗn độn của dấu ngoặc kép (tiêu chuẩn), dấu ngoặc kép (MySQL) và dấu ngoặc (SQL Server) trong SQL của bạn và điều đó sẽ không kết bạn với mọi người.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách lấy Ngày và Giờ hiện tại với Chênh lệch múi giờ trong PostgreSQL

  2. BeanCreationException:Lỗi khi tạo bean với tên 'flywayInitializer'

  3. Nhận [archiver] phiên bản không được hỗ trợ (1.13) trong tiêu đề tệp khi chạy pg_restore

  4. Sử dụng cùng một cột nhiều lần trong mệnh đề WHERE

  5. Django JSONField lọc