W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
該語(yǔ)句用于開(kāi)啟事務(wù)。
數(shù)據(jù)庫(kù)事務(wù)(Database Transaction)是指作為單個(gè)邏輯工作單元執(zhí)行的一系列操作。事務(wù)處理可以用來(lái)維護(hù)數(shù)據(jù)庫(kù)的完整性,保證成批的 SQL 操作全部執(zhí)行或全部不執(zhí)行。
顯示事務(wù)是用戶自定義或用戶指定的事務(wù)。通過(guò)BEGIN TRANSACTION
,或BEGIN
和BEGIN WORK
(被作為 START TRANSACTION
的別名受到支持)語(yǔ)句顯示開(kāi)始,以COMMIT
或ROLLBACK
語(yǔ)句顯示結(jié)束。
transaction_stmt:
START TRANSACTION [READ ONLY | READ WRITE];
| BEGIN [WORK];
| COMMIT [WORK];
| ROLLBACK [WORK];
| SET TRANSACTION {READ ONLY | READ WRITE};
參數(shù) |
描述 |
---|---|
START TRANSACTION [READ ONLY | READ WRITE] |
開(kāi)啟事務(wù)語(yǔ)句。一旦開(kāi)啟事務(wù),則隨后的 SQL 數(shù)據(jù)操作語(yǔ)句(即
|
BEGIN |
|
COMMIT |
提交當(dāng)前事務(wù)。 |
ROLLBACK |
回滾當(dāng)前事務(wù)。 |
SET TRANSACTION {READ ONLY | READ WRITE} |
將當(dāng)前事務(wù)設(shè)置成 |
假設(shè)現(xiàn)有表 a 如下所示。
id |
name |
num |
sell_date |
---|---|---|---|
1 |
a |
100 |
2013-06-21 10:06:43 |
2 |
b |
200 |
2013-06-21 13:07:21 |
3 |
a |
50 |
2013-06-21 13:08:15 |
CREATE TABLE a (id INT,name VARCHAR(10),num INT,sell_date DATE);
INSERT INTO a VALUES (1, 'a',100,'2013-06-21 10:06:43');
INSERT INTO a VALUES (2, 'b',200,'2013-06-21 13:07:21');
INSERT INTO a VALUES (3, 'a',50,'2013-06-21 13:08:15');
依次執(zhí)行以下命令開(kāi)始執(zhí)行事務(wù),將 id 為 3 的的 name 改為 c,并插入一行當(dāng)前賣(mài)出 a 的記錄。
obclient> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
obclient> UPDATE a SET name = 'c' WHERE id = 3;
Query OK, 1 rows affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
obclient> INSERT INTO a VALUES (4, 'a', 30, '2013-06-21 16:09:13');
Query OK, 1 rows affected (0.00 sec)
obclient> COMMIT;
Query OK, 0 rows affected (0.00 sec)
事務(wù)提交后,執(zhí)行命令查看表 a 信息。
obclient>SELECT * FROM a;
結(jié)果如下:
id |
na |
num |
sell_date |
---|---|---|---|
1 |
a |
100 |
2013-06-21 10:06:43 |
2 |
b |
200 |
2013-06-21 13:07:21 |
3 |
c |
50 |
2013-06-21 13:08:15 |
4 |
a |
30 |
2013-06-21 16:09:13 |
注意
在事務(wù)還沒(méi)有COMMIT
之前,您可以查看下本事務(wù)中的操作是否已經(jīng)生效,比如可以在COMMIT
前,加一句SELECT * FROM a;
。本事務(wù) Session 的訪問(wèn)能讀到最新的結(jié)果,本事務(wù) Session 之外的訪問(wèn)結(jié)果肯定是沒(méi)有生效,在事務(wù)還沒(méi)有COMMIT
前,你之前做的操作除當(dāng)前事務(wù)連接之外都是不可見(jiàn)的。如果您想回滾該事務(wù),直接用ROOLBACK
代替COMMIT
。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: