Maison > base de données > tutoriel mysql > Comment utiliser des valeurs dynamiques comme noms de table dans PostgreSQL ?

Comment utiliser des valeurs dynamiques comme noms de table dans PostgreSQL ?

Mary-Kate Olsen
Libérer: 2024-12-27 06:02:14
original
442 Les gens l'ont consulté

How to Use Dynamic Values as Table Names in PostgreSQL?

Utilisation de valeurs dynamiques comme noms de table dans PostgreSQL

Lors des opérations de base de données, il est souvent nécessaire d'utiliser des valeurs dynamiques comme noms de table. Ceci peut être réalisé grâce au SQL dynamique, où le nom de la table est déterminé lors de l'exécution de la requête.

Dans PostgreSQL, le SQL dynamique peut être implémenté à l'aide de l'instruction PL/PgSQL EXECUTE dans un bloc DO ou une fonction PL/PgSQL. Le SQL ordinaire ne prend pas en charge le SQL dynamique.

Par exemple, considérons l'objectif suivant : utiliser le résultat d'une requête pour déterminer dynamiquement le nom de la table pour une requête ultérieure.

Requête vers Obtenez le nom de la table :

SELECT 'backup_' || TO_CHAR(CURRENT_DATE,'yyyy-mm-dd')
Copier après la connexion

Suivant souhaité Requête :

CREATE TABLE (SELECT 'backup_' || TO_CHAR(CURRENT_DATE,'yyyy-mm-dd')) AS * SELECT FROM backup
Copier après la connexion

Solution utilisant 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;
Copier après la connexion

Explication :

La fonction format(...) est utilisée pour construire l'instruction SQL dynamique. Le spécificateur de format %I garantit une citation correcte du nom de la table/colonne.

Remarque :

Pour les valeurs littérales, il est recommandé d'utiliser EXECUTE ... USING au lieu de formater (...) avec %L. Cependant, pour les identifiants tels que les noms de table, le format %I est une alternative pratique à l'utilisation de quote_ident.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal