确保余额持续更新

时间:2019-05-30 17:45:42

标签: postgresql transactions acid

这是我的数据库架构,与问题有关。

enter image description here

这是触发因素之一:

CREATE OR REPLACE FUNCTION "public"."update_balance_bet"()
  RETURNS "pg_catalog"."trigger" AS $BODY$
    DECLARE
    currentBalance INTEGER;
    BEGIN

    currentBalance = (SELECT balance FROM "public"."Users" WHERE id=NEW."UserId");
    UPDATE "public"."Users" SET balance=(NEW.amount+currentBalance);
    RETURN NEW;
END
$BODY$

CREATE TRIGGER bet_trigger
    AFTER INSERT ON "public"."Bets"
    FOR EACH ROW
    EXECUTE FUNCTION update_balance_bet();

基本上,从我的应用程序中,我将记录插入到表Bets,奖金,取款和存款中,然后其余工作由触发器完成。我的问题是我使用的机制是否将在所有情况下保证一致性,还是应该使用原始锁定?我假设插入Bets表是一项交易,同时触发函数更新余额是正确的,所以如果插入Bets中出了点问题,余额将不会更新,或者如果余额更新有问题,则不会插入新记录赌桌?

0 个答案:

没有答案