2017-05-11 2 views
0

J'exécute une commande alter table et en ajoutant une nouvelle colonne avec une valeur par défaut, il affiche une erreur.Tableau Alter dans une fonction Postgres

CREATE OR REPLACE FUNCTION test_function() RETURNS void AS $$ 
BEGIN 
EXECUTE format('ALTER TABLE viminfo ADD COLUMN vimtype character varying(64) NOT NULL DEFAULT (NA), ADD COLUMN vimname character varying(255) NOT NULL DEFAULT (NA)'); 
END 
$$language plpgsql; 

Erreur: ERREUR: la colonne « na » n'existe pas

Quel est le problème que je fais ici .. Merci

+0

Pourquoi le 'execute'? Vous pouvez écrire l'instruction DDL directement dans la fonction sans l'utilisation de SQL dynamique. –

Répondre

1

si vous ne citez pas la chaîne, il est entendu comme objet , essayez ceci:

CREATE OR REPLACE FUNCTION test_function() RETURNS void AS $$ 
BEGIN 
EXECUTE format('ALTER TABLE viminfo ADD COLUMN vimtype character varying(64) NOT NULL DEFAULT %L, ADD COLUMN vimname character varying(255) NOT NULL DEFAULT %L','NA','NA'); 
END 
$$language plpgsql;