Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Meniru Lajur Dikira dalam PostgreSQL?

Bagaimanakah Saya Boleh Meniru Lajur Dikira dalam PostgreSQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-21 17:12:17523semak imbas

How Can I Emulate Computed Columns in PostgreSQL?

Mensimulasikan Lajur Dikira dalam PostgreSQL

Tidak seperti MS SQL Server, PostgreSQL tidak menyokong lajur yang dikira secara asli. Walau bagaimanapun, beberapa kaedah mereplikasi fungsi ini dengan berkesan.

PostgreSQL 12 dan Kemudian

PostgreSQL 12 memperkenalkan lajur yang dijana STORED, mencerminkan gelagat lajur yang dikira SQL Server. Lajur ini disimpan secara fizikal dalam jadual, mudah diakses semasa pertanyaan.

<code class="language-sql">CREATE TABLE tbl (
  int1    int,
  int2    int,
  product bigint GENERATED ALWAYS AS (int1 * int2) STORED
);</code>

PostgreSQL 11 dan Terdahulu

Untuk versi PostgreSQL yang lebih lama, mensimulasikan lajur terjana maya memerlukan fungsi dan notasi atribut.

Sintaks Fungsi:

<code class="language-sql">CREATE FUNCTION col(tbl) RETURNS type AS 'expression';</code>

Penggunaan:

<code class="language-sql">SELECT tbl.col, ... FROM tbl;</code>

Pendekatan ini meniru lajur terhasil maya; namun, ia tidak termasuk dalam SELECT *.

Pendekatan Alternatif

  • Paparan: Bina paparan yang menggabungkan lajur yang dikira. Menggunakan SELECT * mendapatkan semula kedua-dua lajur asal dan dikira.
  • Pencetus: Laksanakan lajur pengiraan yang berterusan dengan mencipta pencetus untuk mengemas kini lajur yang dikira secara automatik apabila lajur sumbernya berubah.
  • Paparan Terwujud: Untuk lajur yang dikira yang kerap ditanya, paparan terwujud sebelum pengiraan dan hasil simpan, mengoptimumkan prestasi.

Pertimbangan Penting:

  • Lajur yang dijana DISIMPAN (PostgreSQL 12 ) disertakan dalam SELECT *.
  • Fungsi yang meniru lajur terjana maya mesti ditakrifkan sebagai IMMUTABLE untuk mendayakan indeks ungkapan.
  • Paparan material sesuai untuk lajur pengiraan berterusan yang memerlukan akses kerap.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meniru Lajur Dikira dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn