sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan opretter jeg en brugerdefineret funktion i AWS Aurora RDS Postgres

Vi støder på det samme problem og kom i kontakt med AWS, som bekræftede, at det faktisk er et problem med Query Editor-værktøjet. De har ikke en forventet ankomsttid på, hvornår problemet er løst.

Løsning 1:Brug psql

Den gode nyhed er, at dette vil fungere med psql . Dette er et uddrag fra deres svarmail:

$ 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, hvordan du opsætter det:https://docs.aws .amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html

Løsning 2:Brug Data API

Vi bruger allerede Data API at kommunikere med vores klynge, så for os er den enkleste løsning faktisk at bruge AWS CLI og den eksisterende databasehemmelighed.

Du kan sætte din funktionsdefinition i en function.sql fil:

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

Udfør det derefter 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

Forhåbentlig er dette nyttigt, held og lykke!




  1. Sådan forbinder du MySQL-database med PHP-websted

  2. SQL ordreadresse efter husnummer

  3. Hvordan ændres skemaet for flere PostgreSQL-tabeller i én operation?

  4. Hvordan viser man billede fra databasen i CodeIgniter?