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

Kolom yang dihitung / dihitung / virtual / diturunkan di PostgreSQL

Hingga Postgres 11 kolom yang dihasilkan tidak didukung - seperti yang didefinisikan dalam standar SQL dan diimplementasikan oleh beberapa RDBMS termasuk DB2, MySQL dan Oracle. Atau "kolom terhitung" . yang serupa dari SQL Server.

STORED kolom yang dihasilkan diperkenalkan dengan Postgres 12 . Contoh sepele:

CREATE TABLE tbl (
  int1    int
, int2    int
, product bigint GENERATED ALWAYS AS (int1 * int2) STORED
);

db<>main biola di sini

VIRTUAL kolom yang dihasilkan mungkin datang dengan salah satu iterasi berikutnya. (Belum ada di Postgres 14).

Terkait:

  • Notasi atribut untuk pemanggilan fungsi memberikan kesalahan

Sampai saat itu , Anda dapat meniru VIRTUAL kolom yang dihasilkan dengan fungsi menggunakan notasi atribut (tbl.col ) yang terlihat dan berfungsi seperti kolom yang dibuat secara virtual . Itu sedikit keanehan sintaks yang ada di Postgres karena alasan historis dan kebetulan sesuai dengan kasusnya. Jawaban terkait ini memiliki contoh kode :

  • Simpan kueri umum sebagai kolom?

Ekspresi (tampak seperti kolom) tidak disertakan dalam SELECT * FROM tbl , meskipun. Anda harus selalu mencantumkannya secara eksplisit.

Dapat juga didukung dengan indeks ekspresi yang cocok - asalkan fungsinya IMMUTABLE . Seperti:

CREATE FUNCTION col(tbl) ... AS ...  -- your computed expression here
CREATE INDEX ON tbl(col(tbl));

Alternatif

Atau, Anda dapat menerapkan fungsi serupa dengan VIEW , secara opsional digabungkan dengan indeks ekspresi. Kemudian SELECT * dapat menyertakan kolom yang dihasilkan.

"Bertahan" (STORED ) kolom yang dihitung dapat diimplementasikan dengan pemicu dengan cara yang identik secara fungsional.

Tampilan terwujud adalah konsep yang terkait erat, diimplementasikan sejak Postgres 9.3.
Dalam versi sebelumnya, seseorang dapat mengelola MV secara manual.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django cache.set() menyebabkan kesalahan kunci duplikat

  2. Gunakan variabel yang disetel oleh perintah meta psql di dalam blok DO

  3. Cara Memperbarui Array di PostgreSQL

  4. Ubah Tanggal menjadi Hari Julian di PostgreSQL

  5. Apakah nama fungsi dalam huruf besar/kecil PostgreSQL tidak peka?