PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 23/05/2017 10:44:22

marco2
Membre

Exécuter script plpgsql dans un fichier.sql

peut-on exécuter du pgsql dans un fichier import.sql pour renommer les contraintes d'une table en utilisant Hibernate(jta)?

Voici mon script:
#import.sql

DO
$$
DECLARE
curs CURSOR FOR SELECT * FROM update_foreignkey_constraint;
table_row update_foreignkey_constraint%ROWTYPE;
cons REFCURSOR;
constraint_row INFORMATION_SCHEMA.KEY_COLUMN_USAGE%ROWTYPE;
BEGIN
OPEN curs;
LOOP
     FETCH NEXT FROM curs INTO table_row;
        EXIT WHEN NOT FOUND;
OPEN cons FOR SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE table_name=table_row.table_name AND constraint_name LIKE'fk%'  AND column_name= table_row.column_name;

FETCH NEXT FROM cons INTO constraint_row;
       
IF FOUND THEN
    EXECUTE 'ALTER TABLE '||table_row.table_name||' RENAME CONSTRAINT '||constraint_row.constraint_name ||' TO ' ||table_row.constraint_name;
ELSE
   RAISE EXCEPTION 'Nom de table introuvable : %', table_row.table_name;
   END IF;
    EXIT WHEN NOT FOUND;
       RAISE NOTICE '%', constraint_row.constraint_name;
      CLOSE cons;
      END LOOP;
       CLOSE curs;
       DROP TABLE public.update_foreignkey_constraint;
       EXCEPTION
       WHEN duplicate_object THEN
        DROP TABLE public.update_foreignkey_constraint;
        RAISE NOTICE 'Attention, cette contrainte de clé existe (%).',table_row.constraint_name;
        END;
$$;

Hors ligne

#2 23/05/2017 18:57:02

rjuju
Administrateur

Re : Exécuter script plpgsql dans un fichier.sql

On peut utiliser une insruction DO dans un script sql.

Hors ligne

#3 24/05/2017 11:22:28

marco2
Membre

Re : Exécuter script plpgsql dans un fichier.sql

l'instruction DO à bien été utilisée en début du script.

Hors ligne

#4 24/05/2017 11:34:30

rjuju
Administrateur

Re : Exécuter script plpgsql dans un fichier.sql

Du coup, je n'ai pas compris quel est votre problème.

Hors ligne

Pied de page des forums