0
這是怎麼回事?基本上,這個過程會更新主買方表中的列以檢查用戶是否有其他表中的數據。在postgres中使用for循環和if語句
DO language plpgsql $$
DECLARE
buyer integer;
BEGIN
FOR buyer IN SELECT id FROM buyers
LOOP
IF (SELECT count(*) FROM invoice WHERE buyer_id = buyer) > 0 THEN
UPDATE buyers SET has_invoice = true WHERE id = buyer;
ELSE
UPDATE buyers SET has_invoice = false WHERE id = buyer;
END IF;
END LOOP;
RETURN;
END;
$$;
你不需要循環,這可以用一個更新語句(更有效率)完成。 –
另外,如果您在另一個連接更新「invoice」表時運行此操作,則可能會產生錯誤的結果。您需要考慮併發性,或者採取表鎖,以便您可以忽略它。 –