PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để tạo hàm do người dùng xác định trong AWS Aurora RDS Postgres

Chúng tôi gặp phải vấn đề tương tự và đã liên hệ với AWS, người đã xác nhận rằng đó thực sự là vấn đề với công cụ Trình chỉnh sửa truy vấn. Họ không có ETA về thời điểm sự cố sẽ được khắc phục.

Giải pháp 1:Sử dụng psql

Tin tốt là điều này sẽ hoạt động với psql . Đây là một đoạn trích từ email trả lời của họ:

$ 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

Tài liệu về cách thiết lập: https://docs.aws .amazon.com / AmazonRDS / mới nhất / UserGuide / USER_ConnectToPostgreSQLInstance.html

Giải pháp 2:Sử dụng API dữ liệu

Chúng tôi đã sử dụng API dữ liệu để giao tiếp với cụm của chúng tôi, vì vậy đối với chúng tôi, giải pháp đơn giản nhất thực sự là sử dụng AWS CLI và bí mật cơ sở dữ liệu hiện có.

Bạn có thể đặt định nghĩa hàm của mình trong function.sql tệp:

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

Sau đó thực thi nó trên cơ sở dữ liệu với:

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

Hy vọng rằng điều này là hữu ích, chúc may mắn!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để thử nhiều lần CHỌN cho đến khi có kết quả?

  2. Sự cố với phạm vi thời gian vô hạn trong Rails

  3. Nhóm postgres theo truy vấn

  4. Làm cách nào để truy vấn SQL cho các từ có dấu câu trong Postgresql?

  5. Cột postgres bytea đang trả về chuỗi (mảng char) thay vì mảng byte