PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie erstelle ich eine benutzerdefinierte Funktion in AWS Aurora RDS Postgres

Wir stoßen auf das gleiche Problem und haben uns mit AWS in Verbindung gesetzt, der bestätigt hat, dass es sich tatsächlich um ein Problem mit dem Abfrage-Editor-Tool handelt. Sie haben keine voraussichtliche Ankunftszeit, wann das Problem behoben sein wird.

Lösung 1:Verwenden Sie psql

Die gute Nachricht ist, dass dies mit psql funktioniert . Dies ist ein Ausschnitt aus ihrer Antwort-E-Mail:

$ 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 zur Einrichtung:https://docs.aws .amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html

Lösung 2:Verwenden Sie die Daten-API

Wir verwenden bereits die Daten-API um mit unserem Cluster zu kommunizieren, daher ist die einfachste Lösung für uns tatsächlich die Verwendung der AWS CLI und des vorhandenen Datenbankgeheimnisses.

Sie können Ihre Funktionsdefinition in eine function.sql einfügen Datei:

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

Dann auf der Datenbank ausführen mit:

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

Hoffentlich ist das nützlich, viel Glück!