PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak utworzyć funkcję zdefiniowaną przez użytkownika w AWS Aurora RDS Postgres?

Natknęliśmy się na ten sam problem i skontaktowaliśmy się z AWS, który potwierdził, że rzeczywiście jest to problem z narzędziem Edytor zapytań. Nie mają szacowanego czasu przybycia, kiedy problem zostanie naprawiony.

Rozwiązanie 1:Użyj psql

Dobrą wiadomością jest to, że będzie to działać z psql . To jest fragment odpowiedzi e-maila:

$ 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

Dokumentacja, jak to skonfigurować:https://docs.aws .amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html

Rozwiązanie 2:Użyj interfejsu API danych

Używamy już Data API do komunikacji z naszym klastrem, więc dla nas najprostszym rozwiązaniem jest użycie AWS CLI i istniejącego klucza bazy danych.

Możesz umieścić swoją definicję funkcji w pliku function.sql plik:

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

Następnie uruchom go w bazie danych za pomocą:

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

Mam nadzieję, że jest to przydatne, powodzenia!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Połączenie z postgresem z maszynopisu zawiesza się

  2. Funkcja RPAD() w PostgreSQL

  3. PostgreSQL - ustaw domyślną wartość komórki zgodnie z inną wartością komórki

  4. Jak ustawić UTF-8 w konstruktorze klasy PDO dla bazy danych PHP PgSQL

  5. Jak uzyskać dostęp do postgresql w Dockerze za pomocą sqlalchemy?