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

thực thi chương trình bên ngoài với trình kích hoạt trong postgres 9.4

Tuyên bố từ chối: Tôi làm việc với Andreas Fritsch trong cùng một dự án.

Chúng tôi đã giải quyết vấn đề này theo cách sau.

Có một "Ngôn ngữ" -extension PL / sh Trình xử lý ngôn ngữ thủ tục cho PostgreSQL được mã hóa bởi Peter Eisentraut, nó thực hiện chính xác những gì chúng ta cần.

Bạn xác định một shell-script như sau:

CREATE or REPLACE FUNCTION test(text) RETURNS text AS '
#!/bin/bash
echo Test: $1 is working
' LANGUAGE plsh;

Đây là một ví dụ về hàm kích hoạt với một số biến môi trường hữu ích cho trình kích hoạt:

CREATE or REPLACE FUNCTION TriggerTest() RETURNS trigger AS $$
#!/bin/bash
#mkdir /has/triggertest/$PLSH_TG_NAME
cd /has/triggertest
touch PLSH_TG_NAME-$PLSH_TG_NAME
touch PLSH_TG_WHEN-$PLSH_TG_WHEN
touch PLSH_TG_LEVEL-$PLSH_TG_LEVEL
touch PLSH_TG_OP-$PLSH_TG_OP
touch PLSH_TG_TABLE_NAME-$PLSH_TG_TABLE_NAME
touch PLSH_TG_TABLE_SCHEMA-$PLSH_TG_TABLE_SCHEMA
touch new-$new.x
#touch "arg-0-'$0'"
touch "arg-1-'$1'"
touch "arg-2-'$2'"
touch "arg-3-'$3'"
touch "arg-4-'$4'"

for arg do
    touch "Arg is '$arg'"
done

exit 0
$$ LANGUAGE plsh;

Bạn tạo trước-insert-trigger với SQL-Statement

sau
CREATE TRIGGER tbefore BEFORE INSERT OR UPDATE OR DELETE ON ttest2
    FOR EACH ROW EXECUTE PROCEDURE TriggerTest(new);

Tôi hy vọng điều này sẽ giúp bất kỳ ai khác đang tìm kiếm một giải pháp tương tự cho vấn đề của mình.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL nhiều giao dịch trên cùng một kết nối

  2. Làm cách nào để chọn nhiều hàng bằng khóa chính tổng hợp của chúng trong JOOQ?

  3. Cách đặt tên ứng dụng trong url Postgresql JDBC?

  4. Làm thế nào tôi có thể xác định ràng buộc này?

  5. 4 cách để chọn hàng trùng lặp trong PostgreSQL