sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur skapar jag en användardefinierad funktion i AWS Aurora RDS Postgres

Vi stöter på samma problem och kom i kontakt med AWS, som bekräftade att det verkligen är ett problem med verktyget Query Editor. De har ingen ETA på när problemet ska åtgärdas.

Lösning 1:Använd psql

Den goda nyheten är att detta kommer att fungera med psql . Det här är ett utdrag från deras svarsmail:

$ 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

Dokumentation om hur du ställer in det:https://docs.aws .amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html

Lösning 2:Använd Data API

Vi använder redan Data API att kommunicera med vårt kluster, så för oss är den enklaste lösningen faktiskt att använda AWS CLI och den befintliga databashemligheten.

Du kan lägga in din funktionsdefinition i en function.sql fil:

CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$
    BEGIN
        RETURN i + 1;
    END;
$$ LANGUAGE plpgsql;

Kör sedan det på databasen med:

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

Förhoppningsvis är detta användbart, lycka till!




  1. Hur kan jag avrunda ett tal nedåt till närmaste 10?

  2. PHP:Varning:sort() förväntar sig att parameter 1 är array, resurs given

  3. PHP-anslutningsfel med databasen

  4. Exportera Google App Engine Datastore till MySQL?