Maison >base de données >tutoriel mysql >Comment créer des tables dans PostgreSQL en utilisant « IF NOT EXISTS » ?

Comment créer des tables dans PostgreSQL en utilisant « IF NOT EXISTS » ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-04 09:43:40367parcourir

How to Create Tables in PostgreSQL Using

Comment créer des tables avec la clause "IF NOT EXISTS" de PostgreSQL

MySQL permet aux utilisateurs de créer des tables avec la clause "IF NOT EXISTS" , en garantissant que la table n'est créée que si elle n'existe pas déjà. Cela évite les erreurs si le script est exécuté plusieurs fois.

Dans PostgreSQL, cette fonctionnalité a été introduite dans la version 9.1, permettant l'utilisation de :

CREATE TABLE IF NOT EXISTS myschema.mytable (i integer);

Pour les versions antérieures de PostgreSQL, les éléments suivants la fonction peut être utilisée comme solution de contournement :

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$;

Cette fonction peut être appelée aussi souvent que nécessaire using :

SELECT create_mytable();

Remarques :

  • Les colonnes schemaname et tablename dans pg_tables sont sensibles à la casse.
  • pg_tables ne contient que le contenu réel tables, donc l'identifiant peut toujours être occupé par des objets associés.
  • Si l'utilisateur exécutant la fonction n'a pas les privilèges nécessaires pour créer la table, l'attribut SECURITY DEFINER peut être utilisé pour la fonction.

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