在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫/ MySQL 匯報
MySQL 復(fù)制表
MySQL ALTER 命令
MySQL 安裝
MySQL 日期與時間方面的函數(shù)
MySQL SQL Injection
MySQL 排序結(jié)果
MySQL 臨時表
MySQL 介紹
MySQL 數(shù)據(jù)導(dǎo)出
MySQL 索引
MySQL 數(shù)值函數(shù)
MySQL 更新查詢
MySQL UNION 關(guān)鍵字
MySQL RAND 函數(shù)
創(chuàng)建 MySQL 數(shù)據(jù)庫
MySQL AVG 函數(shù)
MySQL Using Join
MySQL Handling Duplicates
MySQL SUM 函數(shù)
MySQL 數(shù)據(jù)類型
MySQL 插入查詢
MySQL 字符串函數(shù)
MySQL Using Sequences
MySQL 管理
MySQL 數(shù)據(jù)導(dǎo)入
MySQL BETWEEN 子句
MySQL MIN 函數(shù)
創(chuàng)建 MySQL 表
MySQL Group By 子句
MySQL COUNT 函數(shù)
MySQL 匯報
MySQL 選擇數(shù)據(jù)庫
MySQL Where Clause
MySQL 選擇查詢
MySQL Like Clause
MySQL 正則表達(dá)式
一些非常有用的學(xué)習(xí)資源
MySQL NULL Values
MySQL 刪除查詢
MySQL 數(shù)據(jù)庫信息
一些有用的 MySQL 函數(shù)與子句
MySQL 刪除表
MySQL MAX 函數(shù)
MySQL SQRT 函數(shù)
MySQL 終止數(shù)據(jù)庫
連接 MySQL 服務(wù)器
MySQL IN 子句
MySQL CONCAT 函數(shù)
MySQL PHP語法

MySQL 匯報

事務(wù)就是一組連續(xù)的數(shù)據(jù)庫操作,執(zhí)行起來仿佛像是單一的工作單元。換句話說,除非該組內(nèi)所有操作都成功完成,否則事務(wù)永遠(yuǎn)不會結(jié)束。如果事務(wù)中的某一個操作失敗,則整個事務(wù)也將失敗。

實際上,將在一個組中結(jié)合許多 SQL 查詢,你將同時執(zhí)行所有的事務(wù),作為事務(wù)的一部分。

事務(wù)的特點

事務(wù)一般具有以下4種典型特點,人們通常會用這4種特點的英文首字母縮寫組合詞 ACID 來表示。

  • 原子性Atomicity)確保工作單元內(nèi)的所有操作都能成功完成。如若不然,事務(wù)在遭受失敗時就會被放棄,之前的種種操作就會被撤銷回它們之前的狀態(tài)。
  • 一致性Consistency)確保數(shù)據(jù)庫能夠在成功提交的事務(wù)的基礎(chǔ)上正確改變狀態(tài)。
  • 隔離性Isolation)使事務(wù)能夠獨立操作,事務(wù)之間彼此透明。
  • 持久性Durability)確保當(dāng)系統(tǒng)發(fā)生失敗時,已提交的事務(wù)的結(jié)果或者說效果能夠持續(xù)存在。

在 MySQL 中,事務(wù)通常以 BEGIN WORK 語句開始,以 COMMIT 或 ROLLBACK(只取其一) 語句結(jié)束。在開始與結(jié)束聲明之間的 SQL 命令就構(gòu)成了事務(wù)的主體。

COMMIT 與 ROLLBACK

MySQL事務(wù)主要用到兩個關(guān)鍵字 COMMITROLLBACK

  • 成功完成一個事務(wù)后,就會執(zhí)行 COMMIT 命令,從而使施加于所涉及的表上的改變生效。
  • 如果事務(wù)失敗,就會執(zhí)行 ROLLBACK 命令,將事務(wù)中所引用的每一個表都回撤到之前的狀態(tài)。

通過設(shè)定會話變量 AUTOCOMMIT 可以控制事務(wù)行為。如果 AUTOCOMMIT 被設(shè)為1(默認(rèn)值),則每一個 SQL 語句(無論是否在事務(wù)中)都會被認(rèn)為是一個完成的事務(wù),則默認(rèn)當(dāng)它結(jié)束時予以提交。當(dāng) AUTOCOMMIT 被設(shè)為0(通過命令 SET AUTOCOMMIT=0)時,后續(xù)一系列語句就像是一個事務(wù),直到 COMMIT 語句執(zhí)行為止,不再提交任何行為。

可以在 PHP 中利用 mysql_query()執(zhí)行 SQL 命令。

事務(wù)的常見范例

這些事件都跟所用的編程語言無關(guān)。邏輯路徑可以用你所使用的任何語言來創(chuàng)建。

可以在 PHP 中利用 mysql_query()執(zhí)行 SQL 命令。

  • 通過執(zhí)行 SQL 命令 BEGIN WORK 可開啟事務(wù)。

  • 執(zhí)行一個或更多的如下 SQL 命令:SELECT、INSERT、UPDATE 或 DELETE。

  • 檢查是否有錯,一切是否符合要求。

  • 如果出錯,執(zhí)行 ROLLBACK 命令,否則利用 COMMIT 命令提交。

MySQL 中的事務(wù)安全型表類型

不能直接使用事務(wù),如果強(qiáng)行使用,則無法保證它們的安全性。如果打算在 MySQL 編程中使用事務(wù),就需要以特殊的方式來創(chuàng)建表。有很多種支持事務(wù)表可供選擇,但其中最常見的是 InnoDB。

對 InnoDB 表的支持,需要在編譯 MySQL 源碼時用到一個特殊的編譯參數(shù)。如果 MySQL 版本不支持 InnoDB,則需要請你的 ISP 構(gòu)建一個支持 InnoDB 表類型的 MySQL 版本,或者下載安裝一個用于 Windows 或 Linux/UNIX 系統(tǒng)的 MySQL-Max 二進(jìn)制分發(fā)版,在其開發(fā)環(huán)境中使用這種表類型。

如果你的 MySQL 版本支持 InnoDB 表,則只需在表創(chuàng)建語句中添加一個 TYPE = InnoDB 定義即可。比如,下面這段代碼就創(chuàng)建了一個叫做 tcount_tbl 的 InnoDB 表。

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> create table tcount_tbl
    -> (
    -> tutorial_author varchar(40) NOT NULL,
    -> tutorial_count  INT
    -> ) TYPE=InnoDB;
Query OK, 0 rows affected (0.05 sec)

有關(guān)InnoDB的詳細(xì)信息,可參看這個鏈接:

如果你的 MySQL 支持 GEMINI 或 BDB 這兩種表類型,也可以使用它們。

上一篇:MySQL Group By 子句下一篇:MySQL PHP語法