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

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

Susan Sarandon
Susan Sarandonoriginal
2025-01-02 18:00:39376parcourir

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

Création conditionnelle de tables dans PostgreSQL

Dans MySQL, la syntaxe CREATE TABLE IF NOT EXISTS vous permet de créer une table uniquement si ce n'est pas le cas. Cela n’existe pas déjà. Cela empêche la recréation accidentelle de table lors de l'exécution d'un script plusieurs fois.

PostgreSQL 9.1 et versions ultérieures

PostgreSQL 9.1 a introduit la même fonctionnalité que MySQL :

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

Pré-PostgreSQL 9.1

Pour les anciennes versions de PostgreSQL, vous pouvez utiliser une fonction 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$;

Appelez la fonction pour créer la table :

SELECT create_mytable();

Remarques :

  • La table pg_tables est sensible à la casse.
  • La fonction vérifie uniquement les tables réelles, pas les objets associés.
  • Envisagez d'utiliser le mot-clé SECURITY DEFINER si le rôle d'exécution ne dispose pas des privilèges nécessaires.

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