Maison >base de données >tutoriel mysql >Comment puis-je générer dynamiquement des noms de table dans PostgreSQL ?

Comment puis-je générer dynamiquement des noms de table dans PostgreSQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-30 15:46:09428parcourir

How Can I Dynamically Generate Table Names in PostgreSQL?

Génération dynamique de noms de table dans PostgreSQL

En SQL, le SQL dynamique n'est pas pris en charge sauf dans la variante PL/PgSQL, qui peut créer des requêtes dynamiques. Pour utiliser le résultat d'une requête comme nom de table dans une autre requête, vous pouvez utiliser l'instruction PL/PgSQL EXECUTE.

Voici un exemple :

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

Le spécificateur de format %I dans la fonction de format cite correctement les identifiants, y compris les noms de table, éliminant ainsi le besoin de citations explicites avec quote_ident.

Pour éviter les vulnérabilités d'injection SQL, envisagez d'utiliser l'instruction EXECUTE ... USING pour les littéraux au lieu de format(...) avec %L. Pour les identifiants comme les noms de tables/colonnes, la concision du modèle %I reste une alternative utile à 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!

Déclaration:
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