sql >> Database >  >> RDS >> PostgreSQL

Hoe maak ik een door de gebruiker gedefinieerde functie in AWS Aurora RDS Postgres

We kwamen hetzelfde probleem tegen en namen contact op met AWS, die bevestigde dat het inderdaad een probleem is met de Query Editor-tool. Ze hebben geen ETA wanneer het probleem zal worden opgelost.

Oplossing 1:gebruik psql

Het goede nieuws is dat dit werkt met psql . Dit is een fragment uit hun antwoord-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

Documentatie over hoe het in te stellen:https://docs.aws .amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html

Oplossing 2:gebruik de Data API

We gebruiken al de Data API om met ons cluster te communiceren, dus voor ons is de eenvoudigste oplossing eigenlijk het gebruik van de AWS CLI en het bestaande databasegeheim.

U kunt uw functiedefinitie plaatsen in een function.sql bestand:

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

Voer het vervolgens uit in de database met:

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

Hopelijk is dit nuttig, veel succes!




  1. Methode om de dichtstbijzijnde lng/lat-locaties te vinden zonder een straal van 15 mijl?

  2. ORA-00838

  3. Hoe krijg ik tekstuele inhoud van BLOB in Oracle SQL?

  4. SQL - Vind volledig woord in tekst