MYSQL--事务处理_MySQL
bitsCN.com
MYSQL--事务处理
事务处理在各种管理系统中都有着广泛的应用,比如人员管理系统,很多同步数据库操作大都需要用到事务处理。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! www.bitsCN.com
删除的SQL语句
delete from userinfo where ~~~
delete from mail where ~~
delete from article where~~
~~ www.bitsCN.com
如果没有事务处理,在你删除的过程中,假设出错了,只执行了第一句,那么其后果是难以想象的!
但用事务处理。如果删除出错,你只要rollback就可以取消删除操作(其实是只要你没有commit你就没有确实的执行该删除操作)
一般来说,在商务级的应用中,都必须考虑事务处理的!
查看inodb信息
shell> /usr/local/mysql -u root -p
mysql> show variables like "have_%"
系统会提示:
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| have_bdb | YES |
| have_crypt | YES |
| have_innodb | YES |
| have_isam | YES |
| have_raid | YES |
| have_symlink | YES |
| have_openssl | NO |
| have_query_cache | YES |
+------------------+-------+
8 rows in set (0.05 sec)
如果是这样的,那么我们就可以创建一张支持事务处理的表来试试了。
MYSQL的事务处理功能!
作者:Feifengxlq Email:feifengxlq@sohu.com
一直以来我都以为MYSQL不支持事务处理,所以在处理多个数据表的数据时,一直都很麻烦(我是不得不将其写入文本文件,在系统重新加载得时候才写入数据库以防出错)~今天发现MYSQL数据库从4.1就开始支持事务功能,据说5.0将引入存储过程^_^
先简单介绍一下事务吧!事务是DBMS得执行单位。它由有限得数据库操作序列组成得。但不是任意得数据库操作序列都能成为事务。一般来说,事务是必须满足4个条件(ACID)
原子性(Autmic):事务在执行性,要做到“要么不做,要么全做!”,就是说不允许事务部分得执行。即使因为故障而使事务不能完成,在rollback时也要消除对数据库得影响!
一致性(Consistency):事务得操作应该使使数据库从一个一致状态转变倒另一个一致得状态!就拿网上购物来说吧,你只有即让商品出库,又让商品进入顾客得购物篮才能构成事务!
隔离性(Isolation):如果多个事务并发执行,应象各个事务独立执行一样!
持久性(Durability):一个成功执行得事务对数据库得作用是持久得,即使数据库应故障出错,也应该能够恢复!
MYSQL的事务处理主要有两种方法。
1、用begin,rollback,commit来实现
begin 开始一个事务
rollback 事务回滚
commit 事务确认
2、直接用set来改变mysql的自动提交模式
MYSQL默认是自动提交的,也就是你提交一个QUERY,它就
直接执行!我们可以通过
set autocommit=0 禁止自动提交
set autocommit=1 开启自动提交
来实现事务的处理。
但注意当你用 set autocommit=0 的时候,你以后所有的SQL都将
做为事务处理,直到你用commit确认或rollback结束,注意当你结
束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!
个人推荐使用第一种方法!
MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!
其他的类型是不支持的!(切记!)
下次有空说下MYSQL的数据表的锁定和解锁!
MYSQL5.0 WINXP下测试通过~ ^_^
mysql> use test;
Database changed
mysql> CREATE TABLE `dbtest`(
-> id int(4)
-> ) TYPE=INNODB;
Query OK, 0 rows affected, 1 warning (0.05 sec)
mysql> select * from dbtest
-> ;
Empty set (0.01 sec)
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into dbtest value(5);
Query OK, 1 row affected (0.00 sec)
mysql> insert into dbtest value(6);
Query OK, 1 row affected (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from dbtest;
+------+
| id |
+------+
| 5 |
| 6 |
+------+
2 rows in set (0.00 sec)
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into dbtest values(7);
Query OK, 1 row affected (0.00 sec)
mysql> rollback;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from dbtest;
+------+
| id |
+------+
| 5 |
| 6 |
+------+
2 rows in set (0.00 sec)
mysql>
*************************************************
[PHP]
function Tran( $sql ) {
$judge = 1;
mysql_query('begin');
foreach ($sql as $v) {
if ( !mysql_query($v) ) {
$judge = 0;
}
}
if ($judge == 0) {
mysql_query('rollback');
return false;
}
elseif ($judge == 1) {
mysql_query('commit');
return true;
}
}
[/PHP]
************************************************
$handler=mysql_connect("localhost","root","");
mysql_select_db("task");
mysql_query("SET AUTOCOMMIT=0");//设置为不自动提交,因为MYSQL默认立即执行
mysql_query("BEGIN");//开始事务定义
if(!mysql_query("insert into trans (id) values('2')"))
{
mysql_query("ROOLBACK");//判断当执行失败时回滚
}
if(!mysql_query("insert into trans (id) values('4')"))
{
mysql_query("ROOLBACK");//判断执行失败回滚
}
mysql_query("COMMIT");//执行事务
mysql_close($handler);
?>
bitsCN.com
ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP を使用してシンプルなオンライン貸出管理システムを作成する方法には、特定のコード例が必要です はじめに: デジタル時代の到来により、図書館管理方法も大幅に変化しました。従来の手動記録システムは、オンライン借入管理システムに徐々に置き換えられています。オンライン貸出管理システムは、本の貸出と返却のプロセスを自動化することで効率を大幅に向上させます。この記事では、PHP を使用して簡単なオンライン融資管理システムを作成する方法と、具体的なコード例を紹介します。 1. オンライン借入管理システムの作成を開始する前のシステム要件の分析

技術の進歩と社会の発展に伴い、スマートプロパティ管理システムは現代の都市開発に不可欠な部分となっています。その際、効率性、信頼性、スピードなどの利点から、Go言語をベースとしたスマートプロパティ管理システムが注目を集めています。この記事では、Go言語を使用した私たちのチームのスマートプロパティ管理システムの実践を紹介します。 1. 要件分析 私たちのチームは主に不動産会社向けにこの不動産管理システムを開発しています。その主な任務は、不動産管理会社と居住者を結びつけ、不動産管理会社の管理を容易にするとともに、居住者ができるようにすることです。

PHP は非常に人気のあるプログラミング言語であり、CodeIgniter4 は一般的に使用される PHP フレームワークです。 Web アプリケーションを開発する場合、フレームワークを使用すると、開発プロセスのスピードアップ、コードの品質の向上、メンテナンス コストの削減が可能になり、非常に役立ちます。この記事ではCodeIgniter4フレームワークの使い方を紹介します。 CodeIgniter4 フレームワークのインストール CodeIgniter4 フレームワークは、公式 Web サイト (https://codeigniter.com/) からダウンロードできます。下

PHP を使用して Linux 環境でデータベース操作を実行する方法 最新の Web アプリケーションでは、データベースは不可欠なコンポーネントです。 PHP は、さまざまなデータベースと対話できる人気のあるサーバー側スクリプト言語です。この記事では、Linux 環境でデータベース操作に PHP スクリプトを使用する方法を紹介し、いくつかの具体的なコード例を示します。ステップ 1: 必要なソフトウェアと依存関係をインストールする 開始する前に、PHP と関連する依存関係が Linux 環境にインストールされていることを確認する必要があります。いつもの

Pagoda Panel は、サーバーの迅速な導入、管理、監視に役立つ強力なパネル ソフトウェアで、特に Web サイトの構築、データベース管理、サーバーのメンテナンスが頻繁に必要な中小企業や個人ユーザーに役立ちます。これらのタスクの中でも、MySQL データベースの管理は多くの場合重要な仕事です。では、MySQL 管理に Pagoda パネルを使用するにはどうすればよいでしょうか?それでは、順を追ってご紹介していきます。ステップ 1: Pagoda パネルをインストールする. MySQL 管理に Pagoda パネルを使用し始める前に、まず Pagoda パネルをインストールする必要があります。

MySQL データベース管理システムの基本原理の分析 MySQL は、データの保存と管理に構造化照会言語 (SQL) を使用する、一般的に使用されるリレーショナル データベース管理システムです。この記事では、データベースの作成、データ テーブルの設計、データの追加、削除、変更などの操作を含む、MySQL データベース管理システムの基本原理を紹介し、具体的なコード例を示します。 1. データベースの作成 MySQL では、まずデータを保存するデータベース インスタンスを作成する必要があります。次のコードは、「my」という名前のファイルを作成できます。

MongoDB を使用してシンプルな Web サイト バックエンド管理システムを開発する方法 インターネットの発展に伴い、Web サイトの使用と管理はますます重要になってきています。 Web サイト管理者が Web サイトのコンテンツをバックグラウンドで管理しやすくするには、シンプルで効率的な Web サイトのバックグラウンド管理システムを開発することが不可欠です。この記事では、MongoDB を使用してシンプルな Web サイト バックエンド管理システムを開発する方法を紹介し、具体的なコード例でそれを実証します。準備 まず、MongoDB データベースがインストールされ、構成されていることを確認する必要があります。特定の

C++を使って簡単な学生寮管理システムを書くにはどうすればよいですか?学生寮管理システムは、学生寮の情報を便利に管理できるソフトウェアシステムです。 C++ を使用して簡単な学生寮管理システムを作成すると、プログラミング スキルを発揮できるだけでなく、学生寮管理プロセスの理解と把握も向上します。この記事では、C++を使って簡単な学生寮管理システムを書く方法を紹介します。まず、学生寮の基本情報(学生名、学籍番号、性別、連絡先など)を定義する必要があります。構造体を使用できます
