PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Operator penugasan yang terlupakan =dan yang biasa :=

Dalam parser PL/PgSQL, operator penugasan didefinisikan sebagai

assign_operator : '='
                | COLON_EQUALS
                ;

Ini adalah fitur warisan, hadir dalam kode sumber sejak tahun 1998, ketika diperkenalkan - seperti yang dapat kita lihat di repo Git PostgreSQL.

Mulai dari versi 9.4 didokumentasikan secara resmi.

Keistimewaan ini - memiliki dua operator untuk hal yang sama - muncul di daftar pengguna pgsql, dan beberapa orang memintanya untuk dihapus, tetapi masih disimpan di inti karena kumpulan kode lawas yang adil bergantung padanya.

Lihat pesan ini dari Tom Lane (pengembang inti Pg).

Jadi, untuk menjawab pertanyaan Anda secara langsung:

Tidakkah saya menemukan beberapa bagian dalam dokumen yang menyebutkan dan/atau menjelaskan hal ini?

Anda tidak menemukannya karena tidak didokumentasikan, yang diperbaiki pada versi 9.4.

Apakah ada konsekuensi yang diketahui menggunakan =alih-alih :=.

Tidak ada konsekuensi sampingan dari penggunaan = , tetapi Anda harus menggunakan := untuk penugasan agar kode Anda lebih mudah dibaca, dan (sebagai efek samping) lebih kompatibel dengan PL/SQL.

Pembaruan:mungkin ada konsekuensi samping dalam skenario yang jarang terjadi (lihat jawaban Erwin)

UPDATE:jawaban diperbarui berkat masukan dari Daniel, Sandy &lainnya.



  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 DISTINCT ON dengan ORDER BY yang berbeda

  2. Susunan yang lebih kuat dengan dukungan ICU di PostgreSQL 10

  3. Bagaimana cara memberikan 1.000.000 hasil basis data kepada klien API?

  4. Bagaimana cara menggunakan kembali hasil untuk klausa SELECT, WHERE dan ORDER BY?

  5. Penyelaman Cloud Vendor:PostgreSQL di Google Cloud Platform (GCP)