Maison > base de données > tutoriel mysql > Comment créer une table dans PostgreSQL uniquement si elle n'existe pas déjà ?

Comment créer une table dans PostgreSQL uniquement si elle n'existe pas déjà ?

Mary-Kate Olsen
Libérer: 2024-12-30 15:02:10
original
369 Les gens l'ont consulté

How to Create a Table in PostgreSQL Only If It Doesn't Already Exist?

Création de tables avec "CREATE TABLE IF NOT EXISTS" dans PostgreSQL

La possibilité de créer une table uniquement si elle n'existe pas déjà est une fonctionnalité utile pour garantir que les tables ne sont créées qu'une seule fois, même si un script est exécuté plusieurs fois.

Dans MySQL, cette fonctionnalité peut être implémenté à l'aide de l'instruction :

CREATE TABLE IF NOT EXISTS foo ...;
Copier après la connexion

PostgreSQL

Dans les versions PostgreSQL 9.1 et ultérieures, la syntaxe "CREATE TABLE IF NOT EXISTS" est prise en charge :

CREATE TABLE IF NOT EXISTS myschema.mytable (i integer);
Copier après la connexion

Solution de contournement pour les personnes âgées Versions

Pour les versions PostgreSQL antérieures à 9.1, une fonction peut être utilisée pour obtenir la même fonctionnalité :

CREATE OR REPLACE FUNCTION create_mytable()
  RETURNS void
  LANGUAGE plpgsql AS
$func$
BEGIN
   IF EXISTS (SELECT FROM pg_catalog.pg_tables 
              WHERE  schemaname = 'myschema'
              AND    tablename  = 'mytable') THEN
      RAISE NOTICE 'Table myschema.mytable already exists.';
   ELSE
      CREATE TABLE myschema.mytable (i integer);
   END IF;
END
$func$;
Copier après la connexion

Cette fonction peut être appelée plusieurs fois pour créer la table uniquement si elle n'existe pas.

Remarques :

  • La fonction create_mytable() suppose que la table sera créée dans le schéma myschema.
  • Si l'utilisateur exécutant cette fonction ne dispose pas des privilèges nécessaires pour créer la table, l'attribut SECURITY DEFINER devra peut-être être utilisé pour garantir le succès. exécution.

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