sql >> Database >  >> RDS >> PostgreSQL

Systeemopdracht uitvoeren met argument in een PostgreSQL-functie

Je hebt toegang tot sommige waarden in plsh-triggers.

  • UPDATE biedt alleen OUD
  • INSERT biedt alleen NEW (duh)
  • VERWIJDEREN Ik heb niet getest

Dus je krijgt die waarden met behulp van argumenten, zoals $1, $2

Je functie zou er ongeveer zo uitzien:

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

$$;

Merk op dat ik $1 $2 $3 . niet heb gebruikt , dat komt omdat plsh extensie dumpt ALLE kolommen in argumenten in de volgorde waarin ze in uw tabel worden gedeclareerd. U kunt dus iets doen als INSERT INTO table1 (column3) VALUES (6); en het zal onder $3 . zijn in plsh , ervan uitgaande dat dit de derde kolom in de tabel is.

Even terzijde:metadata van trigger is beschikbaar via env vars.



  1. Top 115 SQL-interviewvragen die u in 2022 moet voorbereiden

  2. SQL Server-uitvoerclausule in een scalaire variabele

  3. Inefficiënte SQL-query

  4. Hoe een vakbondsvraag in de doctrine te schrijven?