扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
CREATE DEFINER=`root`@`localhost` PROCEDURE `createBusiness`(parameter1 int)
成都创新互联服务项目包括华容网站建设、华容网站制作、华容网页制作以及华容网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,华容网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到华容省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
BEGIN
#Routine body goes here...
DECLARE flag int DEFAULT parameter1;#声明变量flag,将参数值赋给该变量
DECLARE uuidStr VARCHAR(32);#声明一个长度为32位的字符串
DECLARE currentTime TIMESTAMP;#声明一个类型为时间戳的变量
declare err INT default 0;#声明一个整形变量err,默认值是0
declare continue handler for sqlexception set err=1;#当sqlexception handler捕捉到异常时,设置err=1
START TRANSACTION;#开始事务
WHILE flag0 DO #注意: while不能空实现(在while块中,里面必须有语句)
#uuid()函数得到的字符串是'6ccd780c-baba-1026-9564-0040f4311e29',剔除里面的-,得到一个32位的字符串
SET uuidStr = REPLACE(UUID(),'-','') ;
#得到当前的时间
SET currentTime = CURRENT_TIMESTAMP();
#执行插入语句,注意连接字符串的函数concat(str1,str2,...);其中str..也可以是数字类型
INSERT INTO
表名称
(id,title,keyword,hasImage,isTodayHead,isShowInHome,isBigness,publishTime,originId,modify_time,isAnalysis)
VALUE
(uuidStr,CONCAT('事件标题',flag),CONCAT('关键字',flag),1,1,0,0,currentTime,CONCAT('xxxxxxx',flag),currentTime,1);
#每循环一次,flag要减去1,注意没有flag--的语法
set flag = flag-1;
#在这里测试当err=1时,事务是否有了回滚,测试ok
#IF flag=7 THEN #注意在procedure中给变量赋值要用到set,或在变量声明时用default来父子,所以=号可以用来比较两边的值是否相等,=也可,区别先不去纠结。
#set err=1;
#END if;
END WHILE;
IF (err=0) THEN
commit;
select 'OK';
ELSE
rollback;
select 'err';
END IF;
END;
按常规的方法进行安装
安装MySQL完成后,启动MySQL(和PHP搭配之最佳组合)binWinMySQL(和PHP搭配之最佳组合)admin
再退出
运行
MySQL(和PHP搭配之最佳组合)binmydqld-nt --remove
MySQL(和PHP搭配之最佳组合)binMySQL(和PHP搭配之最佳组合)d-max-nt --install
以上二行是去掉不支持事务处理的MySQL(和PHP搭配之最佳组合)服务,改成支持MySQL(和PHP搭配之最佳组合)事务处理的服务
然后在c:下建一个ibdata目录及iblogs目录,当然名字可以不一样,记住这二个名字及盘符,以后要用到,你也可以不建在C盘,然后,打开c:winnt或c:windows目录下的my.ini,在最后添加:以下内容为程序代码:
1.innodb_data_file_path = ibdata1:2000M;ibdata2:2000M
2.innodb_data_home_dir = c:ibdata
3.set-variable = innodb_mirrored_log_groups=1
4.innodb_log_group_home_dir = c:iblogs
5.set-variable = innodb_log_files_in_group=3
6.set-variable = innodb_log_file_size=30M
7.set-variable = innodb_log_buffer_size=8M
8.innodb_flush_log_at_trx_commit=1
9.innodb_log_arch_dir = c:iblogs
10.innodb_log_archive=0
11.set-variable = innodb_buffer_pool_size=80M
12.set-variable = innodb_additional_mem_pool_size=10M
13.set-variable = innodb_file_io_threads=4
14.set-variable = innodb_lock_wait_timeout=50
其中
1.innodb_data_file_path = ibdata1:2000M;ibdata2:2000M 这一行中的2000M可以自己改成200m,看你盘的容量大小,MySQL(和PHP搭配之最佳组合)推荐10G及以上的硬盘空间最好用这样的设置;
以下这一行
1.innodb_data_home_dir = c:ibdata 也可以改成你自己起的目录,主要是看你自己在刚才建的目录在哪里啦
按照以上的方法,你已经安装MySQL好了MySQL(和PHP搭配之最佳组合)的事务数据库,不过你要是按照MySQL(和PHP搭配之最佳组合)手册上的方法安装,把上面的一段配制放到my.cnf是去的话,可是会出错哦
好了,现在让我们试试看是不是安装完成了,启动apache(Unix平台最流行的WEB服务器平台),或iis,在服务里启动MySQL(和PHP搭配之最佳组合)的服务,打开phpmyadmin,输入:SHOW variables like have_%
你要是看到下面的结果,那说明你安装MySQL成功了
以下内容为程序代码
1.Variable_nameValue
2.have_bdbYES
3.have_innodb YES
4.have_isam YES
5.have_raid NO
6.have_symlink YES
7.have_openssl NO
8.have_query_cacheYES
9. 注:MySQL(和PHP搭配之最佳组合)的事务处理方法的使用同其它数据库语法相似,在这里我就不多说了,另外,MySQL(和PHP搭配之最佳组合)将在4.3中实现外键及子查询,简单的外键已经在4.0中都已经实现了,只是不怎么方便,相信以后会做得更好些。
MySQL的数据库引擎必须设置成InnoDB类型才是支持事务的,设置为InnoDB后增、删、改都是可以通过事务控制,其他数据库引擎不支持事务。
查看数据库引擎方法:
在显示结果里参数engine后面的就表示该表当前用的存储引擎
mysql
show
create
table
表名;
什么是事务? \x0d\x0a\x0d\x0a事务是逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,这个特性就是事务 \x0d\x0a\x0d\x0a注意:mysql数据支持事务,但是要求必须是innoDB存储引擎 \x0d\x0a\x0d\x0a解决这个问题: \x0d\x0a\x0d\x0amysql的事务解决这个问题,因为mysql的事务特性,要求这组操作,要不全都成功,要不全都失败,这样就避免了某个操作成功某个操作失败。利于数据的安全 \x0d\x0a\x0d\x0a如何使用: \x0d\x0a\x0d\x0a(1)在执行sql语句之前,我们要开启事务 start transaction; \x0d\x0a\x0d\x0a(2)正常执行我们的sql语句 \x0d\x0a\x0d\x0a(3)当sql语句执行完毕,存在两种情况: \x0d\x0a\x0d\x0a1,全都成功,我们要将sql语句对数据库造成的影响提交到数据库中,committ \x0d\x0a\x0d\x0a2,某些sql语句失败,我们执行rollback(回滚),将对数据库操作赶紧撤销 \x0d\x0a\x0d\x0a(注意:mysql数据支持事务,但是要求必须是innoDB存储引擎) \x0d\x0amysql create table bank(name varchar(20),money decimal(5,1))engine=innodb defau \x0d\x0alt charset=utf8; \x0d\x0a\x0d\x0amysql inset into bank values('shaotuo',1000),('laohu',5000); \x0d\x0a\x0d\x0amysql select*from bank; \x0d\x0a+---------+--------+ \x0d\x0a| name | money | \x0d\x0a+---------+--------+ \x0d\x0a| shaotuo | 1000.0 | \x0d\x0a| laohu | 5000.0 | \x0d\x0a+---------+--------+ \x0d\x0a\x0d\x0a------没有成功“回滚”执行rollback \x0d\x0amysql start transaction; //开启事务 \x0d\x0aQuery OK, 0 rows affected (0.00 sec) \x0d\x0a\x0d\x0amysql update bank set money=money+500 where name='shaotuo'; \x0d\x0aQuery OK, 1 row affected (0.00 sec) \x0d\x0aRows matched: 1 Changed: 1 Warnings: 0 \x0d\x0a\x0d\x0amysql update bank set moey=money-500 where name='laohu'; \x0d\x0aERROR 1054 (42S22): Unknown column 'moey' in 'field list' \x0d\x0amysql rollback; //只要有一个不成功,执行rollback操作 \x0d\x0aQuery OK, 0 rows affected (0.01 sec) \x0d\x0a\x0d\x0amysql select*from bank; \x0d\x0a+---------+--------+ \x0d\x0a| name | money | \x0d\x0a+---------+--------+ \x0d\x0a| shaotuo | 1000.0 | \x0d\x0a| laohu | 5000.0 | \x0d\x0a+---------+--------+ \x0d\x0a------成功之后 进行commit操作 \x0d\x0amysql start transaction; //开启事务 \x0d\x0aQuery OK, 0 rows affected (0.00 sec) \x0d\x0a\x0d\x0amysql update bank set money=money+500 where name='shaotuo'; \x0d\x0aQuery OK, 1 row affected (0.01 sec) \x0d\x0aRows matched: 1 Changed: 1 Warnings: 0 \x0d\x0a\x0d\x0amysql update bank set money=money-500 where name='laohu'; \x0d\x0aQuery OK, 1 row affected (0.00 sec) \x0d\x0aRows matched: 1 Changed: 1 Warnings: 0 \x0d\x0a\x0d\x0amysql commit; //两个都成功后执行commit(只要不执行commit,sql语句不会对真实的数据库造成影响) \x0d\x0aQuery OK, 0 rows affected (0.05 sec) \x0d\x0a\x0d\x0amysql select*from bank; \x0d\x0a+---------+--------+ \x0d\x0a| name | money | \x0d\x0a+---------+--------+ \x0d\x0a| shaotuo | 1500.0 | \x0d\x0a| laohu | 4500.0 | \x0d\x0a+---------+--------+
MYSQL--事务处理
事务处理在各种管理系统中都有着广泛的应用,比如人员管理系统,很多同步数据库操作大都需要用到事务处理。
比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流