sql >> Base de Datos >  >> RDS >> PostgreSQL

Ejecutar comando del sistema con argumento en una función de PostgreSQL

Puede acceder a algunos valores en activadores plsh.

  • ACTUALIZAR ofertas solo ANTIGUAS
  • INSERTAR ofertas solo NUEVAS (duh)
  • ELIMINAR No probé

Entonces obtienes esos valores usando argumentos, como $1, $2

Tu función se vería así:

CREATE FUNCTION tarifador_func2() RETURNS TRIGGER
LANGUAGE plsh
AS $$
#!/bin/sh
/usr/bin/php /var/www/html/...regras.php $3 $6 $1

$$;

Note que no usé $1 $2 $3 , eso es porque plsh volcados de extensión TODOS columnas en argumentos en el orden en que se declaran en su tabla. Así que podrías hacer algo como INSERT INTO table1 (column3) VALUES (6); y estará por debajo de $3 en plsh , suponiendo que esta sea la tercera columna de la tabla.

Como nota al margen, los metadatos del disparador están disponibles a través de env vars.