这是我的数据库架构,与问题有关。
这是触发因素之一:
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中出了点问题,余额将不会更新,或者如果余额更新有问题,则不会插入新记录赌桌?