Låt oss börja med dina alternativ:
- pl/pgsql och sql
- pl/perl, pl/pythonu och pl/tcl
- Andra snälla
Dessa stora kategorier har skillnader i styrkor och svagheter. De har också skillnader i hur man går tillväga. En av de stora svagheterna med externa pls som pl/ruby är att om de inte kan underhållas kan du få problem senare.
PL/PGSQL och SQL
I dessa fall kan du förmodligen uttrycka dina ändringar som en SQL-fråga med rekursivt vanligt tabelluttryck. Sedan kan du använda sql eller, om du behöver lite procedurstöd, lägg till det och använd pl/pgsql. Det är vanligtvis så jag ställer mig till det här.
PL/Perl, PL/TCL och PL/PythonU
Du kanske också kan porta din Ruby-kod till Python eller Perl och använda PL-variationerna av dessa språk. Dessa PL:er används i stor utsträckning och underhålls som en del av kärndistributionen av PostgreSQL. De går inte bort. Detta skulle ge dig bättre insyn i hur logiken rör sig.
En betydande begränsning för PL/Python är att det inte har något betrodd läge, och ett problem du kommer att stöta på med pl/perl är att betrodd läge innebär ingen tillgång till externa moduler.