PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como crio uma função definida pelo usuário no AWS Aurora RDS Postgres


Encontramos o mesmo problema e entramos em contato com a AWS, que confirmou que realmente é um problema com a ferramenta Query Editor. Eles não têm um ETA sobre quando o problema será corrigido.

Solução 1:use psql


A boa notícia é que isso funcionará com psql . Este é um trecho do e-mail de resposta:
$ psql -h database-2.cluster-xx.us-west-2.rds.amazonaws.com -d postgres -U postgres
postgres=> CREATE OR REPLACE FUNCTION trigger_set_updated_at() RETURNS TRIGGER AS $$
postgres$> BEGIN  NEW.updated_at = NOW();  
postgres$> RETURN NEW;END;$$ 
postgres-> LANGUAGE plpgsql;
CREATE FUNCTION

Documentação sobre como configurá-lo:https://docs.aws .amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html

Solução 2:use a API de dados


Já usamos a API de dados para se comunicar com nosso cluster, portanto, para nós, a solução mais simples é usar a AWS CLI e o segredo do banco de dados existente.

Você pode colocar sua definição de função em um function.sql Arquivo:
CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$
    BEGIN
        RETURN i + 1;
    END;
$$ LANGUAGE plpgsql;

Em seguida, execute-o no banco de dados com:
cat function.sql | xargs -0 aws rds-data execute-statement \
    --resource-arn arn:aws:rds:eu-west-1:xxx:cluster:cluster-name \
    --secret-arn arn:aws:secretsmanager:eu-west-1:xxx:secret:secret-name-xxx \
    --database "database_name" \
    --sql

Espero que seja útil, boa sorte!