Maison >base de données >tutoriel mysql >Comment utiliser des 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')
Suivant souhaité Requête :
CREATE TABLE (SELECT 'backup_' || TO_CHAR(CURRENT_DATE,'yyyy-mm-dd')) AS * SELECT FROM backup
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;
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!