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!