MySQL事务处理
START TRANSACTION, COMMIT和ROLLBACK语法
START TRANSACTION | BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET AUTOCOMMIT = {0 | 1}
START
TRANSACTION或BEGIN语句可以开始一项新的事务。COMMIT可以提交当前事务,是变更成为永久变更。ROLLBACK可以
回滚当前事务,取消其变更。SET AUTOCOMMIT语句可以禁用或启用默认的autocommit模式,用于当前连接。
自选的WORK关键词被支持,用于COMMIT和RELEASE,与CHAIN和RELEASE子句。CHAIN和RELEASE可以被用于对事务完成进行附加控制。Completion_type系统变量的值决定了默认完成的性质。
AND
CHAIN子句会在当前事务结束时,立刻启动一个新事务,并且新事务与刚结束的事务有相同的隔离等级。RELEASE子句在终止了当前事务后,会让服务器
断开与当前客户端的连接。包含NO关键词可以抑制CHAIN或RELEASE完成。如果completion_type系统变量被设置为一定的值,使连锁
或释放完成可以默认进行,此时NO关键词有用。
默认情况下,MySQL采用autocommit模式运行。这意味着,当您执行一个用于更新(修改)表的语句之后,MySQL立刻把更新存储到磁盘中。
如果您正在使用一个事务安全型的存储引擎(如InnoDB, BDB或NDB簇),则您可以使用以下语句禁用autocommit模式:
SET AUTOCOMMIT=0;
通过把AUTOCOMMIT变量设置为零,禁用autocommit模式之后,您必须使用COMMIT把变更存储到磁盘中,或着如果您想要忽略从事务开始进行以来做出的变更,使用ROLLBACK。
如果您想要对于一个单一系列的语句禁用autocommit模式,则您可以使用START TRANSACTION语句:
START TRANSACTION;
SELECT @A:=SUM(salary) from table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;
使用START TRANSACTION,autocommit仍然被禁用,直到您使用COMMIT或ROLLBACK结束事务为止。然后autocommit模式恢复到原来的状态。
BEGIN
和BEGIN WORK被作为START TRANSACTION的别名受到支持,用于对事务进行初始化。START
TRANSACTION是标准的SQL语法,并且是启动一个ad-hoc事务的推荐方法。BEGIN语句与BEGIN关键词的使用不同。BEGIN关键词
可以启动一个BEGIN...END复合语句。后者不会开始一项事务。
您也可以按照如下方法开始一项事务:
START TRANSACTION WITH CONSISTENT SNAPSHOT;
WITH
CONSISTENT
SNAPSHOT子句用于启动一个一致的读取,用于
相关文档:
mysql 创建表:
mysql> create table user(
-> userid int(4) primary key not null auto_increment,
-> username varchar(16) not null,
-> userpassword varchar(32) not null
-> );
create table log(
logid int(4) ......
截取province字符串中第一个<br>前的字符串~!
update lcjd
set `province` = substring_index( `province` , '<br>', '1' );
在需要添加‘0’的位置添加一个‘0’
update lcjd
set lc_name2 = concat('0', lc_name2)
WHERE length(lc_name2) = 3
http://www.sqlstudy.com/s ......
假设mysql 安装在c:盘,mysql数据库的用户名是root,密码是123456,数据库名是testdb,在d:盘根目录下面存放备份数据库,备份数据库名字为backup20070713.sql(20070713.sql为备份日期)
备份数据库:
mysqldump -uroot -p123456 testdb>d:/backup20070713.sql
恢复数据库:
删除原有数据库,建立数据库,把备份数据 ......
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker: */
//===========================================
// 程序: mysql-Based Session Class
// 功能: 基于mysql存储的 Session 功能类
// 作者: yejr
// 网站: http://imysql.cn
// 时间: 2007- ......
过了一阵子后,为了写分布式作业,重新使用Mysql时,发现虽然启动成功了,但是连接的时候去出现如下错误
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
根据提示是/var/run/mysqld/mysqld.sock文件不存在。
为什么会这样呢?
  ......