首頁 >資料庫 >mysql教程 >PostgreSQL中如何動態產生表名?

PostgreSQL中如何動態產生表名?

Patricia Arquette
Patricia Arquette原創
2024-12-30 15:46:09412瀏覽

How Can I Dynamically Generate Table Names in PostgreSQL?

在 PostgreSQL 中動態產生資料表名稱

在 SQL 中,不支援動態 SQL,除了 PL/PgSQL 變體,它可以建立動態查詢。若要將一個查詢的結果用作另一個查詢中的表格名稱,您可以使用 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;

中的 %I 格式說明符format 函數正確引用標識符,包括表名,因此無需使用 quote_ident 明確引用。

防止 SQL 注入漏洞,請考慮對文字使用 EXECUTE ... USING 語句,而不是帶有 %L 的 format(...)。對於像表/列名這樣的標識符,%I 模式的簡潔性仍然是 quote_ident 的有用替代方案。

以上是PostgreSQL中如何動態產生表名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn