Maison > base de données > tutoriel mysql > Comment créer des tables dans PostgreSQL sans doublons ?

Comment créer des tables dans PostgreSQL sans doublons ?

DDD
Libérer: 2025-01-01 01:18:10
original
645 Les gens l'ont consulté

How to Create Tables in PostgreSQL without Duplicates?

Création de tables dans PostgreSQL sans duplication

Dans MySQL, la syntaxe "CREATE TABLE IF NOT EXISTS" permet de créer une table sans générer une erreur si elle existe déjà. Cela garantit que le script peut être exécuté plusieurs fois sans créer de tables en double. Dans PostgreSQL, cette fonctionnalité a été introduite à partir de la version 9.1.

PostgreSQL 9.1 et versions ultérieures

Pour PostgreSQL 9.1 et versions ultérieures, vous pouvez utiliser la syntaxe suivante pour créer une table :

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

Versions PostgreSQL antérieures à 9.1

Pour les versions antérieures de PostgreSQL, il existe une solution de contournement en utilisant une fonction :

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

Vous pouvez ensuite appeler la fonction comme suit :

SELECT create_mytable();
Copier après la connexion

Remarques :

  • Assurez-vous que votre syntaxe correspond à la sensibilité à la casse du le schéma et le nom de la table.
  • N'oubliez pas que pg_tables ne contient que des tables réelles, il est donc possible que l'identifiant soit occupé par d'autres objets.
  • Si le rôle exécutant la fonction ne dispose pas des privilèges de création de table requis , envisagez d'accorder ces privilèges à l'aide de la clause SECURITY DEFINER.

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal