Inserire records in PostgreSQL solo se la tabella esiste
In pratica in un db PosgrreSQL, da script SQL, devo inserire un record in una tabella, ma solo se già esiste.
Questo perchè non è detto che tutti abbiano quella tabella.
In PosgreSQL possiamo fare questa in, almeno, due modi.
Nel primo cerchiamo la tabella in information_schema:
DO $$
BEGIN
IF EXISTS (
SELECT 1
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name = 'nome_tabella'
) THEN
INSERT INTO nome_tabella (colonna1, colonna2)
VALUES ('valore1', 'valore2');
END IF;
END $$;
In alternativa possiamo usare to_regclass:
DO $$
BEGIN
IF to_regclass('public.nome_tabella') IS NOT NULL THEN
INSERT INTO nome_tabella (colonna1, colonna2)
VALUES ('valore1', 'valore2');
END IF;
END $$;
Enjoy!
database postgresql to_regclass information_schema sql
Commentami!