Executar linguagem plpgsql sem criar função

image_pdfimage_print

Muitas vezes criamos uma função para ser executada apenas uma vez. Quando for este o caso, não precisamos cria-la, pois podemos executar o código diratamente. Para o nosso exemplo, supomos que temos uma table mytable e queremos remover todas as constraints desta table que começa com fk_. Basta executar o código abaixo

DO $$DECLARE r record;
BEGIN
    FOR r IN SELECT DISTINCT ON (constraint_name) constraint_name, table_name FROM information_schema.table_constraints ORDER BY constraint_name, table_name
    LOOP
        IF (r.table_name=mytable) AND substring(R.constraint_name from 1 for 3)='fk_' THEN 
        EXECUTE 'ALTER TABLE ' || quote_ident(r.table_name)|| ' DROP CONSTRAINT '|| quote_ident(r.constraint_name) || ';';
        END IF;
    END LOOP;
END$$;
Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!