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
Lepaskan: 2024-12-27 06:02:14
asal
445 orang telah melayarinya

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')
Salin selepas log masuk

Diinginkan Seterusnya Pertanyaan:

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

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan