Inserire records in PostgreSQL solo se la tabella esiste

Mattepuffo's logo
Inserire records in PostgreSQL solo se la tabella esiste

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!


Condividi

Commentami!