Rumah >pangkalan data >tutorial mysql >Bagaimana Menggunakan Nilai Dinamik sebagai Nama Jadual dalam PostgreSQL?

Bagaimana Menggunakan Nilai Dinamik sebagai Nama Jadual dalam PostgreSQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-27 06:02:14510semak imbas

How to Use Dynamic Values as Table Names in PostgreSQL?

Menggunakan Nilai Dinamik sebagai Nama Jadual dalam PostgreSQL

Apabila berurusan dengan operasi pangkalan data, selalunya perlu menggunakan nilai dinamik sebagai nama jadual. Ini boleh dicapai melalui SQL dinamik, di mana nama jadual ditentukan semasa pelaksanaan pertanyaan.

Dalam PostgreSQL, SQL dinamik boleh dilaksanakan menggunakan pernyataan PL/PgSQL EXECUTE dalam blok DO atau fungsi PL/PgSQL. SQL biasa tidak menyokong SQL dinamik.

Sebagai contoh, pertimbangkan matlamat berikut: menggunakan hasil pertanyaan untuk menentukan nama jadual secara dinamik untuk pertanyaan seterusnya.

Pertanyaan kepada Dapatkan Nama Jadual:

SELECT 'backup_' || TO_CHAR(CURRENT_DATE,'yyyy-mm-dd')

Diinginkan Seterusnya Pertanyaan:

CREATE TABLE (SELECT 'backup_' || TO_CHAR(CURRENT_DATE,'yyyy-mm-dd')) AS * SELECT FROM backup

Penyelesaian menggunakan PL/PgSQL EXECUTE:

DO
$$
BEGIN
EXECUTE format('CREATE TABLE %I AS SELECT * FROM backup', 'backup_' || to_char(CURRENT_DATE,'yyyy-mm-dd'));
END;
$$
LANGUAGE plpgsql;

Penjelasan:

Fungsi format(...) digunakan untuk membina pernyataan SQL dinamik. Penentu format %I memastikan petikan nama jadual/lajur yang betul.

Nota:

Untuk nilai literal, disyorkan untuk menggunakan EXECUTE ... USING dan bukannya format(...) dengan %L. Walau bagaimanapun, untuk pengecam seperti nama jadual, format %I corak ialah alternatif yang mudah untuk menggunakan quote_ident.

Atas ialah kandungan terperinci Bagaimana Menggunakan Nilai Dinamik sebagai Nama Jadual 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