Update rekordów w pętli

Update rekordów w pętli

Wątek przeniesiony 2023-02-21 13:34 z Java przez ŁF.

W1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 73
0

Cześć, mam zapytanie obliczające checksumę w funkcji, której uzywam w trigerze.

Kopiuj
CREATE OR REPLACE FUNCTION calculate_language_version_checksum() RETURNS trigger
LANGUAGE plpgsql AS '
BEGIN
UPDATE language_versions lv SET checksum =
(select
MD5(cast((array_agg(inv.name || t.message order by t.id)) as text))
from invariants inv
left join translations t on t.invariant_id = inv.id and lv.id = NEW.language_version_id)
WHERE lv.id = NEW.language_version_id;
RETURN NEW;
END
'

Chciałbym użyć tego samego zapytania, żeby wykonało się dla wszystkich rekordów gdzie checksuma jest równa null. Potrzebuje przejść po wszystkich reokordach, więc chyba potrzebowałbym użyć go w jakiejs funkcji oraz w pętli, jak mogę to zrobić ?

S4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1268
2

Tak?

Kopiuj
UPDATE language_versions lv SET checksum =
            (select
            MD5(cast((array_agg(inv.name || t.message order by t.id)) as text))
            from invariants inv
            left join translations t on t.invariant_id = inv.id)
            WHERE checksum is null;

Tu masz chyba jakiś błąd:
screenshot-20230221133907.png

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.