易截截图软件、单文件、免安装、纯绿色、仅160KB

MySQL与事务


MySQL5.X都已经发布好久了,但是还有很多人认为MySQL是不支持事务处理的,这不得不怪他们是孤陋寡闻的,其实,只要你的MySQL版本
支持BDB或InnoDB表类型,那么你的MySQL就具有事务处理的能力。这里面,又以InnoDB表类型用的最多,虽然后来发生了诸如Oracle收
购InnoDB等令MySQL不爽的事情,但那些商业上的斗争与技术无关,下面以InnoDB表类型为例简单说一下MySQL中的事务。
先来明确一下事务涉及的相关知识:
事务都应该具备ACID特征。所谓ACID是Atomic(原子性),Consistent(一致性),Isolated(隔离性),Durable(持续性)四个词的首字母所写,下面以“银行转帐”为例来分别说明一下它们的含义:
原子性:组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。换句话说,事务是不可分割的最小单元。比如:银行转帐过程中,必须同时从一个帐户减去转帐金额,并加到另一个帐户中,只改变一个帐户是不合理的。
一致性:在事务处理执行前后,数据库是一致的。也就是说,事务应该正确的转换系统状态。比如:银行转帐过程中,要么转帐金额从一个帐户转入另一个帐户,要么两个帐户都不变,没有其他的情况。
隔离性:一个事务处理对另一个事务处理没有影响。就是说任何事务都不可能看到一个处在不完整状态下的事务。比如说,银行转帐过程中,在转帐事务没有提交之前,另一个转帐事务只能处于等待状态。
持续性:事务处理的效果能够被永久保存下来。反过来说,事务应当能够承受所有的失败,包括服务器、进程、通信以及媒体失败等等。比如:银行转帐过程中,转帐后帐户的状态要能被保存下来。
再来看看哪些问题会用到事务处理:
这里不说“银行转帐”的例子了,说一个大家实际更容易遇到的“网上购书”的例子。先假设一下问题的背景:网上购书,某书(数据库编号为123)只剩最后一本,而这个时候,两个用户对这本书几乎同时发出了购买请求,让我们看看整个过程:
在具体分析之前,先来看看数据表的定义:
-------------------------------------------------------------------------------
create table book
(
    book_id unsigned int(10) not null auto_increment,
    book_name varchar(100) not null,
    book_price float(5, 2) not null, #我假设每本书的价格不会超过999.99元
    book_number int(10) not n


相关文档:

使用abator配置iBatis,管理数据库(以MySql为例)

相信很多的朋友对使用iBatis管理数据库很不习惯,因为我们要手写代码,特别是dynamic
query部分更是不知如何嵌套,而这些是可以用工具的!下面介绍一种最常用的!不废话了,直接上配置过程!
1、获得  http://ibatis.apache.org/abator.html
    
Eclipse可以自动的进行Update获取此Plugin ......

MySQL数据库的“连接池”

转帖请注明出处,并保持文章的完整性。
对MySQL数据库来说,同一时刻,在同一个连接(connection)上,只允许进行一个操作(query,etc.),如果你的程序是多线程的,并且你在多个线程中都会利用同一个connection对数据库进行操作,那么,就有可能发生问题。
例如,你可能会收到“Commands out of sync”的错误 ......

MYSQL中的 constraint 与 CONSTRAINT

一直习惯使用小写的SQL保留字,没想到今天居然遇到了麻烦哈!!和谐一下MYSQL啦!
环境:Server version: 5.1.37-1ubuntu5 (Ubuntu)
alter table child_table_name
add constraint constraint_name

foreign key (column_1)
references reference_table_name(reference_column_1);

ALTER  TABLE child_t ......

mysql对自增id重新从1排序的两种方法

使用mysql时,通常表中会有一个自增的id字段,但当我们想将表中的数据清空重新添加数据时,希望id重新从1开始计数,用以下两种方法均可:
方法一:
alter table tablename drop column id;
alter table tablename add id mediumint(8) not null primary key auto_increment first;
方法二:
alter table tab ......

Windows 下 mysql 备份恢复命令


假设mysql 安装在c:盘,mysql数据库的用户名是root,密码是123456,数据库名是testdb,在d:盘根目录下面存放备份数据库,备份数据库名字为backup20070713.sql(20070713.sql为备份日期)
备份数据库:
mysqldump -uroot -p123456 testdb>d:/backup20070713.sql
恢复数据库:
删除原有数据库,建立数据库,把备份数据 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号