请教大家一个数据库事务的问题

问题描述

我有这样的一个疑问。例如有一个在线付费系统,账户里面还有100元,现在把这个用户在两个地方登录,同事执行一个操作,在操作的过程中,会执行从用户账户中扣去费用,给卖家付款等操作,当然每个操作都在一个事务没。有没有这样的可能,在这两个操作同时进行的时候登录1的执行过程1事务开始;2重新读取买家账户;3判断钱是否够支付要购买的商品;4购买商品;5从买家扣钱;6付钱给卖家;7事务结束;但在登录2的过程中迅速完成了这个操作过程,并且时间正好处在登录1的过程中的2步骤之后,那么过程1读取的买家的余额结果就是一个错误的结果。这样用户就顺利买到东西,而买家的账户就会出现负值。当然我们也可以限定用户的余额不能是负值,或是付完钱再到数据库判断一下,在确定是否提交。但我举的这个例子是说明一个类似的这样的问题。不知道大家是怎么看待这样的问题的? 问题补充:antiwise 写道

解决方案

5从买家扣钱; 扣钱之前先锁定,然后再查一下余额。
解决方案二:
一、类似这样的系统,是不是可以考虑限定只能同时登录一个二、或许扣款的问题应该如此处理,在付款的时候验证存款,而不在选购商品的时候验证
解决方案三:
退出时告诉客户他还有没办完的事 不能退出 或者登录的时候说他的账户处于活跃状态 不能登录 不过程序处理这种事务都是一瞬间完成的 想太深就啥也办不了了

时间: 2024-08-01 15:19:55

请教大家一个数据库事务的问题的相关文章

数据库事务——每天自动排号从1开始

问题描述 数据库事务--每天自动排号从1开始 功能有点像营业厅的叫号机,定义一个数据库事务在每天3:00的时候,自动更新排号从1开始 解决方案 你用的什么数据库!数据库都用对应的定时任务吧! 你在数据库里写一个定时任务,执行存储过程就可以了 解决方案二: oracle的话,用job定时 ,mysql的话用event,去调用一个存储过程,存储过程干你具体的逻辑 解决方案三: 是什么应用场景?如果业务只是为了实现自动排号,建议用memcached.Redis等缓存服务器更好一些. 解决方案四: 可以

SQL基础-->数据库事务(TRANSACTION)

--====================== --SQL基础-->数据库事务 --======================   一.数据库事务     数据库事务是指作为单个逻辑工作单元执行的一系列操作,可以认为事务就是一组不可分割的SQL语句     二.数据库事务的ACID属性     原子性(atomic)     事务必须是原子工作单元:对于其数据修改,要么全都执行,要么全都不执行.       一致性(consistent)     事务在完成时,必须使所有的数据都保持一致状态

SQL基础15——数据库事务(TRANSACTION)

一.数据库事务     数据库事务是指作为单个逻辑工作单元执行的一系列操作,可以认为事务就是一组不可分割的SQL语句     二.数据库事务的ACID属性     原子性(atomic)      事务必须是原子工作单元:对于其数据修改,要么全都执行,要么全都不执行.       一致性(consistent)      事务在完成时,必须使所有的数据都保持一致状态.在相关数据库中,所有规则都必须应用于事务         的修改,以保持所有数据的完整性.事务结束时,所有的内部数据结构(如B 树

请教一个数据库分组问题

问题描述 请教一个数据库分组问题 我写了这么一个脚本 SELECT da_sp.spdm da_sp.sp da_sp.jldw da_sp.ggxh da_sp.wbdw da_sp.wbbzl da_sp.nbdw da_sp.nbbzl da_sp.cbj da_sp.zhjj da_sp.pddw da_sp.pdxs da_sp.fdyclbj da_sp.zjpsbj xs_jxcrb.spnm sum(xs_jxcrb.cksl) as cksl isnull(c.bqsl0) a

请教一下。 我用vb编写了一个 数据库+发帖功能(自动填写表单) 。

问题描述 请教一下.我用vb编写了一个数据库+发帖功能(自动填写表单).但是,要发帖就得用电脑,真麻烦.现在像用android的手机(g7)发帖.我自己的资源.1,正在看java的教材.继承,接口,io,容器这些都看得7788啦.自学能力还行吧.2,然后希望把数据库放到网上.(用java的jsp?还是用去学学php呢?3,然后如果用手机发帖是登陆我的网站?如果是你,有什么好的思路呢?请问.

数据库事务系列-MySQL跨行事务模型

说来和MySQL倒是有缘,毕业的第一份工作就被分配到了RDS团队,主要负责把MySQL弄到云上做成数据库服务.虽说整天和MySQL打交道,但说实话那段时间并没有很深入的理解MySQL内核,做的事情基本都是围绕着MySQL做管控系统,比较上层.好在周边都是MySQL内核神级人物,在他们的熏陶下多多少少对MySQL的一些基本知识有一些零碎的记录和模糊的认识,这些基础对于今天整理理解MySQL跨行事务模型非常重要.更重要的,有很多不解的地方也可以向大神请教. MySQL事务模型在网上也有很多的介绍,在

mysql dba系统学习(22)数据库事务详解

上个星期去面试数据库管理员的工作,笔试通过之后就是直接的面试,他问了我一个问题,叫我介绍哈数据库的事务的看法和理解,但是不知所错的没有章法的乱答一气,唉唉,基础不扎实啊. 下面来好好的学习哈mysqlinnodb引擎的事务相关的知识 一,我们为什么需要数据库事务呢? 这个问题看似很简单,但是真的能够说明白还是要看看我们的基本功是不是扎实 例如,用户A给用户B通过ATM机转账1000元,那么A账户上就会少1000元,而B用户会多1000元 在这个过程中,两个环节是关联的.第一个账户划出款项必须保证

sqlserver 存储过程-关于一个数据库触发器的问题

问题描述 关于一个数据库触发器的问题 请教一个数据库相关的问题 各位大神好,小弟现正使用sqlserver数据库,现有这么一个需求, 需要监视有关 表A 的插入,修改,删除 操作,并需要将新的整条数据形成类似 <tbrecord id="某一行的ID" columnAname="该行的列名为columnAname的值" columnBname="该行的列名为columnAname的 值">tbName(表的名称) 一个xml字符串保存

数据库事务浅析

数据库为什么要有事务,因为,事务是数据库区别于文件系统的特性之一.在文件系统中,如果你正在对2个文件进行修改,一个更新成功,另外一个在更新之前系统崩溃了,那么这就会有2个不同步的文件. 数据库中事务的基本作用就是将数据库从一种一致性状态转变为另外一种一致性状态. 数据库事务有4个特征(acid): 1.原子性(atomicity):事务中的所有动作要么都发生,要么都不发生. 2.一致性(consistency):事务将数据库状态从一种一致状态转变为下一种一致状态. 3.隔离性(isolation