我有一个Bets
表,用户可以打赌任何字。当一个最后期限到达时,我宣布结果。我想根据我宣布的结果更新用户余额。Accounts
:
| 使用者ID|余额|
| - -|- -|
| 一个|15.00美元|
| 2个|2.0美元。|Bets
:
| 投注ID|使用者ID|幸运字|金额|
| - -|- -|- -|- -|
| 一个|一个|汉堡包|10个|
| 2个|一个|图书|五个|
| 三个|2个|赢|2个|Results
:
| 识别码|日期|幸运字|标价|
| - -|- -|- -|- -|
| 一个|2022年10月20日|图书|五十个|
我的PostgreSQL函数用于宣布结果和更新余额:
Create or replace function public.announce_result(luckyWord text, price numeric)
returns void as
$$
begin
-- Insert to result table
insert into results(date, luckyWord) values (now(), $1);
-- Update each user balance base on calculation
select userId, sum(amount) as amount from bets where luckyWord != $1 group by userId;
select userId, sum(amount) as amount from bets where luckyWord == $1 group by userId;
-- How can I update each user balance base on result above?
-- I could in programming language, but don't know how in SQL.
end
$$ language plpgsql security definer;
在插入和计算之后,我希望帐户表为:
| 使用者ID|余额|
| - -|- -|
| 一个|250.00美元|
| 2个|0.0美元|
1条答案
按热度按时间vmdwslir1#
下面是从一个相关表更新另一个表的示例。