事務(wù)是順序組操作。 它們作為單個單元運行,并且直到組中的所有操作都成功執(zhí)行時才終止。 組中的單個故障會導(dǎo)致整個事務(wù)失敗,并導(dǎo)致對數(shù)據(jù)庫沒有影響。
事務(wù)符合ACID(原子性,一致性,隔離和耐久性) -
原子性 - 它通過中止故障和回滾更改來確保所有操作的成功。
一致性 - 它確保數(shù)據(jù)庫對成功的事務(wù)應(yīng)用更改。
隔離 - 它使事務(wù)的獨立事務(wù)操作。
持久性 - 它確保在系統(tǒng)故障的情況下成功事務(wù)的持久性。
在事務(wù)語句的開頭是START TRANSACTION語句,后跟COMMIT和ROLLBACK語句 -
START TRANSACTION - 開始事務(wù)。
COMMIT - 保存對數(shù)據(jù)的更改。
ROLLBACK - 結(jié)束事務(wù),銷毀任何更改。
事務(wù)成功時執(zhí)行COMMIT,失敗時執(zhí)行ROLLBACK。
注 - 有些語句會導(dǎo)致隱式提交,并且在事務(wù)中使用時也會導(dǎo)致錯誤。 這樣的語句的示例包括但不限于CREATE,ALTER和DROP。
MariaDB事務(wù)還包括SAVEPOINT和LOCK TABLES等選項。 SAVEPOINT設(shè)置一個恢復(fù)點以利用ROLLBACK。 LOCK TABLES允許在會話期間控制對表的訪問,以防止在某些時間段內(nèi)進行修改。
AUTOCOMMIT變量提供對事務(wù)的控制。 設(shè)置為1會強制所有操作都被視為成功事務(wù),而設(shè)置為0會導(dǎo)致持久性更改只發(fā)生在顯式COMMIT語句上。
事務(wù)語句的一般結(jié)構(gòu)包括從START TRANSACTION開始。 下一步是插入一個或多個命令/操作,插入用于檢查錯誤的語句,插入ROLLBACK語句以管理發(fā)現(xiàn)的任何錯誤,最后插入COMMIT語句以對成功的操作應(yīng)用更改。
查看下面給出的示例 -
START TRANSACTION; SELECT name FROM products WHERE manufacturer = 'XYZ Corp'; UPDATE spring_products SET item = name; COMMIT;
更多建議: