国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL事務(wù)

2024-07-24 12:32:36
字體:
供稿:網(wǎng)友

        事務(wù)是數(shù)據(jù)庫處理操作,其中執(zhí)行就好像它是一個單一的一組有序的工作單元。換言之,事務(wù)將永遠不會是完全的,除非在組內(nèi)每個單獨的操作是成功的。如果事務(wù)中的任何操作失敗,整個事務(wù)將失敗。
 
        實際上,許多SQL查詢組成到一個組,將執(zhí)行所有這些一起作為事務(wù)的一部分。
 
事務(wù)性質(zhì)
       事務(wù)具有以下四個標準屬性,通常由首字母縮寫ACID簡稱:
 
       原子性: 確保了工作單位中的所有操作都成功完成; 否則,事務(wù)被中止,在失敗時會被回滾到事務(wù)操作以前的狀態(tài)。
 
一致性:可確保數(shù)據(jù)庫在正確的更改狀態(tài)在一個成功提交事務(wù)。
 
隔離: 使事務(wù)相互獨立地操作。
 
持久性: 確保了提交事務(wù)的結(jié)果或系統(tǒng)故障情況下仍然存在作用。
 
在MySQL中,事務(wù)以BEGIN WORK語句開始開始工作,并使用COMMIT或ROLLBACK語句結(jié)束。SQL命令在開始和結(jié)束語句之間構(gòu)成大量事務(wù)。
 
提交和回滾
這兩個關(guān)鍵字 Commit 和 Rollback 主要用于MySQL的事務(wù)。
 
當一個成功的事務(wù)完成后,COMMIT 命令發(fā)出的變化對所有涉及的表將生效。
 
如果發(fā)生故障,ROLLBACK命令發(fā)出后,事務(wù)中引用的每個表將恢復(fù)到事務(wù)開始之前的狀態(tài)。
 
可以通過設(shè)置AUTOCOMMIT這個會話變量控制事務(wù)的行為。如果AUTOCOMMIT設(shè)置為1(默認值),那么每個SQL語句(在事務(wù)或不在事務(wù))被認為是一個完整的事務(wù)并提交,在默認情況下是在當它完成時。當AUTOCOMMIT設(shè)置為0,通過發(fā)出SET AUTOCOMMIT=0命令, 隨后的一系列語句就像一個事務(wù),但并沒有任何活動被提交直到一個明確的發(fā)出 COMMIT 語句。
 
可以通過使用PHP 的 mysql_query()函數(shù)執(zhí)行這些SQL命令。
 
關(guān)于事務(wù)通用示例
此事件序列是獨立于所使用的編程語言; 邏輯路徑可以是任何編程語言,使用它在創(chuàng)建應(yīng)用程序中創(chuàng)建。
 
可以通過使用 mysql_query()函數(shù)執(zhí)行這些PHP SQL命令
 
開始事務(wù)是通過發(fā)出SQL命令BEGIN WORK
 
類似發(fā)出的一個或多個SQL命令 SELECT, INSERT, UPDATE 或 DELETE.
 
根據(jù)要求,檢查是否有任何錯誤
 
如果有錯誤,發(fā)出ROLLBACK命令,否則執(zhí)行COMMIT命令。
 
在MySQL的事務(wù)安全表類型
不能直接使用事務(wù),可以使用但它們沒有安全保障。如果打算使用事務(wù)在MySQL編程,那么需要使用一個特殊的方式來創(chuàng)建表。 有許多類型的表其支持事務(wù),但目前最流行的一種是:InnoDB.
 
支持InnoDB表需要特定的編譯參數(shù),在源代碼編譯MySQL時。如果MySQL版本不支持InnoDB,得要求互聯(lián)網(wǎng)服務(wù)提供商建立一個版本的MySQL的InnoDB表類型的支持,或 下載并安裝MySQL-Max二進制分發(fā)的Windows版本,或者Linux/UNIX開發(fā)環(huán)境中工作的表類型。
 
如果你的MySQL安裝支持InnoDB表,簡直就是一個TYPE= InnoDB的定義添加到表創(chuàng)建語句后面。例如,下面的代碼創(chuàng)建一個名為 tcount_tbl 的 InnoDB 類型表:
 
root@host# mysql -u root -p password;
Enter password:
mysql> use test;
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
 
可以使用其它類型的表 GEMINI 或 BDB, 但它取決于安裝MySQL時,是否支持這兩種類型。
 
 

(編輯:武林網(wǎng))

上一篇:MySQL正則表達式

下一篇:MySQL管理

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 正定县| 靖州| 延长县| 杭锦后旗| 红桥区| 桓仁| 安图县| 芒康县| 西林县| 长垣县| 金坛市| 孟津县| 织金县| 鸡东县| 南涧| 朝阳区| 彰化市| 新津县| 郓城县| 红安县| 沅陵县| 忻州市| 岚皋县| 自贡市| 博乐市| 平顶山市| 仁寿县| 河西区| 博客| 兴隆县| 德格县| 芒康县| 韶山市| 内乡县| 双城市| 陵川县| 喜德县| 开远市| 抚宁县| 西丰县| 惠来县|