数据库事务-数据库多人操作事务怎样保证

问题描述

数据库多人操作事务怎样保证

表A有字段b,用户每次调用字段b后,都需要给b加1后存库。然后,有两个用户C,D。用户C取出了字段b后,持有了一段时间,这段时间内,用户D对字段b进行了两次操作,即字段b现在的值为b+2,而当用户C持有时间过后,再操作字段b时,这时候用户C持有的字段b已经不是数据库中的那个字段了。那么,应该如何保证不会发生这种情况呢?谢谢。(框架是spring mvc, 业务处直接加的@Transactional)

解决方案

加锁,锁就是解决类似这种问题的,锁很容易使用的

解决方案二:

如果是oracle,数据库会自动维护读一致性,如果第一个事务修改没提交,第二个事务只可以读而不可以写,要等到第一个事务成功提交后,第二个事务才会允许修改,而这次修改的数据是建立在第一个事务修改后的数据上的。

时间: 2024-11-27 11:31:33

数据库事务-数据库多人操作事务怎样保证的相关文章

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

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

MySQL事务数据库(InnoDB类型)的安装方法

mysql|数据|数据库 MySQL数据库分二种类型,一种是传统的数据表格式,一种是支持事务处理的数据表格式(InnoDB,BDB,其中以InnoDB为主),下面我介绍一下关于MySQL事务处理数据库的安装及使用方法你先要去下载一下Mysql max版的安装程序,下载地址:www.mysql.com按常规的方法进行安装安装完成后,启动mysql\bin\WinMySQLadmin再退出运行mysql\bin\mydqld-nt --removemysql\bin\mysqld-max-nt --

安装MySQL事务数据库(InnoDB)

    MySQL数据库分二种类型,一种是传统的数据表格式,一种是支持事务处理的数据表格式(InnoDB,BDB,其中以InnoDB为主),下面我介绍一下关于MySQL事务处理数据库的安装及使用方法 你先要去下载一下Mysql max版的安装程序,下载地址:www.mysql.com 按常规的方法进行安装 安装完成后,启动mysqlbinWinMySQLadmin 再退出 运行 mysqlbinmydqld-nt --remove mysqlbinmysqld-max-nt --install

PHP的Yii框架中使用数据库的配置和SQL操作实例教程_php实例

数据库访问 (DAO)Yii 包含了一个建立在 PHP PDO 之上的数据访问层 (DAO). DAO为不同的数据库提供了一套统一的API. 其中ActiveRecord 提供了数据库与模型(MVC 中的 M,Model) 的交互,QueryBuilder 用于创建动态的查询语句. DAO提供了简单高效的SQL查询,可以用在与数据库交互的各个地方. Yii 默认支持以下数据库 (DBMS): MySQL MariaDB SQLite PostgreSQL CUBRID: 版本 >= 9.3 .

Java连接Sql数据库经常用到的操作_java

废话不多说了,直接给大家分享java操作sql数据库常见的连接问题. 1.连接,查询,更新,关闭 这几个数据基础操作,所以放到一起,写成一个工具类的模式,也就是model2模式的sql工具.这里本想把其他操作都加进去,比如事务处理,但是目前还没想到比较完美的方法,具体看代码吧,注释很详细 import java.sql.*; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * Created b

SQL Server数据库同步问题分享(二)---操作步骤[未完,待续]

    SQL Server数据库同步问题分享[未完,待续](一)  SQL Server数据库同步问题分享(二)---操作步骤[未完,待续]  SQL Server数据库同步问题分享(三)---创建订阅        上面的设置自己看着办数据库表中如果有些表字段没有指定发布,则在筛选的时候是不允许的可以使用发布数据库机器作为分发服务器,一般情况我们也是这么做的,当然我们也可以使用其他的机器作为分发服务器,这里就需要自己配置分发服务器这里配置了机器名的映射,可以参考一下 (一) SQLServe

如何使用触发器实现数据库级守护,防止DDL操作

触发器|数据|数据库      如何使用触发器实现数据库级守护,防止DDL操作 --对于重要对象,实施DDL拒绝,防止create,drop,truncate,alter等重要操作 Last Updated: Sunday, 2004-10-31 12:06 Eygle        不管是有意还是无意的,你可能会遇到数据库中重要的数据表等对象被drop掉的情况,这可能会给我们带来巨大的损失. 通过触发器,我们可以实现对于表等对象的数据库级守护,禁止用户drop操作. 以下是一个简单的范例,供参

C# 对数据库的备份和恢复操作,Sql语句实现

  ///   /// 对数据库的备份和恢复操作,Sql语句实现 ///   /// 实现备份或恢复的Sql语句 /// 该操作是否为备份操作,是为true否,为false private void BakReductSql(string cmdText,bool isBak,string dbname) { string conString=DataBase.dbConnection.sqlNoDBNameConnect(); SqlConnection conn3 = new SqlConn

链接数据库时,对文件操作造成脚本异常:未将对象引用设置到对象的实例,感觉是代码出了问题

问题描述 链接数据库时,对文件操作造成脚本异常:未将对象引用设置到对象的实例,感觉是代码出了问题 第一次对文件进行操作,只是简单的添加照片而已,不知道问题出在那里,当我把操作文件那块代码注释后,其他功能都是正常的,代码如下: string fileExtesion = Path.GetExtension(FileUpload1.PostedFile.FileName).ToLower(); if (FileUpload1.HasFile) { string path = Server.MapPa