MySQL高级特性----事务处理
点击次数:28 次 发布日期:2008-11-28 05:57:17 作者:源代码网
|
源代码网推荐 源代码网推荐 要使用MySQL中的事务处理,首先需要创建使用事务表类型(如BDB = Berkeley DB或InnoDB)的表。 源代码网推荐 源代码网推荐 CREATE TABLE account ( 源代码网推荐 account_id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 源代码网推荐 balance DOUBLE 源代码网推荐 ) TYPE = InnoDB; 源代码网推荐 源代码网推荐 要在事务表上使用事务处理,必须要首先关闭自动提交: 源代码网推荐 源代码网推荐 SET AUTOCOMMIT = 0; 源代码网推荐 源代码网推荐 事务处理以BEGIN命令开始: 源代码网推荐 源代码网推荐 BEGIN; 源代码网推荐 源代码网推荐 现在mysql客户处在于服务器相关的事物上下文中。任何对事务表所做的改变在提交之前不会成为永久性的改变。 源代码网推荐 源代码网推荐 UPDATE ACCOUNT SET balance = 50.25 WHERE account_id = 1; 源代码网推荐 UPDATE ACCOUNT SET balance = 100.25 WHERE account_id = 2; 源代码网推荐 源代码网推荐 在做出所有的改变之后,使用COMMIT命令完成事务处理: 源代码网推荐 源代码网推荐 COMMIT; 源代码网推荐 源代码网推荐 当然,事务处理的真正优点是在执行第二条语句发生错误时体现出来的,若在提交前终止整个事务,可以进行回滚操作: 源代码网推荐 源代码网推荐 ROLLBACK; 源代码网推荐 源代码网推荐 下面是另一个例子,通过MYSQL直接进行数学运算: 源代码网推荐 源代码网推荐 SELECT @first := balance FROM account WHERE account_id = 1; 源代码网推荐 SELECT @second := balance FROM account WHERE account_id = 2; 源代码网推荐 UPDATE account SET balance = @first - 25.00 WHERE account_id = 1; 源代码网推荐 UPDATE account SET balance = @second + 25.00 WHERE account_id = 2; 源代码网推荐 源代码网推荐 除了COMMIT命令外,下列命令也会自动结束当前事务: 源代码网推荐 源代码网推荐 ALTER TABLE 源代码网推荐 BEGIN 源代码网推荐 CREATE INDEX 源代码网推荐 DROP DATABASE 源代码网推荐 DROP TABLE 源代码网推荐 LOCK TABLES 源代码网推荐 RENAME TABLE 源代码网推荐 TRUNCATE 源代码网推荐 UNLOCK TABLES 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网供稿. |
