Tsab ntawv teev npe
MySQL databaseTransaction rollback rho tawm / qhib lub tswv yim / theem ua php nqe lus
MySQL Qhov xwm txheej
MySQL kev lag luam feem ntau yog siv los ua cov ntaub ntawv nrog cov haujlwm loj thiab kev nyuaj siab. Piv txwv li, hauv kev tswj hwm cov neeg ua haujlwm, yog tias koj rho tawm ib tus neeg, koj yuav tsum rho tawm cov ntaub ntawv tseem ceeb ntawm tus neeg, thiab tseem tshem tawm cov ntaub ntawv ntsig txog tus neeg, xws li mailbox, cov ntawv, thiab lwm yam. Ua li no, cov ntaub ntawv no. cov lus hais txog kev ua haujlwm yog kev sib pauv.!
- Hauv MySQL, tsuas yog databases lossis rooj siv Innodb database cav txhawb kev lag luam.
- Kev ua lag luam tuaj yeem siv los tswj kev ncaj ncees ntawm cov ntaub ntawv thiab xyuas kom meej tias cov ntaub ntawv ntawm SQL cov lus yog txhua yam ua tiav lossis tsis ua txhua yam.
- Kev lag luam yog siv los tswj kev ntxig, hloov kho, tshem tawm cov lus
Feem ntau hais lus, kev lag luam yuav tsum ua tau raws li plaub yam xwm txheej (ACID): Atomicity (atomicity), Consistency (stability), Isolation (kev rho tawm), Durability (reliability)
- 1 、Atomicity ntawm kev lag luam:Ib txheej ntawm kev hloov pauv ua tiav lossis raug rho tawm.
- 2 、Kev ruaj ntseg:Muaj cov ntaub ntawv tsis raug cai (txheej txheem tseem ceeb txawv teb chaws thiab lwm yam), thiab kev hloov pauv tau raug rho tawm.
- 3 、Muab cais nyob ib leeg:Kev lag luam khiav ntawm nws tus kheej. Yog tias qhov tshwm sim ntawm ib qho kev lag luam cuam tshuam rau lwm qhov kev lag luam, lwm qhov kev lag luam yuav raug rho tawm. 100% kev rho tawm ntawm kev lag luam yuav tsum tau ceev ceev.
- 4 、kev ntseeg siab:Tom qab software lossis kho vajtse sib tsoo, InnoDB cov ntaub ntawv lub rooj tsav tsheb yuav siv cov ntaub ntawv teev tseg los tsim kho thiab hloov kho nws. Kev ntseeg siab thiab kev kub ceev yog qhov tsis sib xws. Qhov kev xaiv innodb_flush_log_at_trx_commit txiav txim siab thaum twg yuav txuag kev hloov pauv rau lub cav.
Nyob rau hauv lub neej ntawd chaw ntawm MySQL cov kab hais kom ua, kev lag luam tau txais kev cog lus, uas yog, kev ua haujlwm COMMIT yuav ua tiav tam sim tom qab ua tiav SQL nqe lus. Yog li ntawd, txhawm rau pib ua lag luam ncaj ncees, koj yuav tsum siv cov lus txib BEGIN lossis PIB TRANSACTION, lossis ua tiav cov lus txib SET AUTOCOMMIT = 0 txhawm rau lov tes taw kev siv tsis siv neeg cog lus rau kev sib kho tam sim no.
Transaction Control Nqe lus piav qhia:
- Pib los yog PIB TRANSACTION; qhia meej meej pib kev lag luam;
- COMMIT; koj tuaj yeem siv COMMIT WORK, tab sis lawv sib npaug. COMMIT cog lus rau kev hloov pauv thiab ua txhua yam kev hloov kho uas tau ua rau cov ntaub ntawv mus tas li;
- ROLLBACK; koj tuaj yeem siv ROLLBACK WORK, tab sis lawv sib npaug. Rollback yuav xaus tus neeg siv cov kev hloov pauv thiab tshem tawm tag nrho cov kev hloov pauv tsis tau ua tiav;
- SAVEPOINT identifier; SAVEPOINT tso cai rau kev tsim ib qho chaw khaws cia hauv kev lag luam, thiab tuaj yeem muaj ntau yam SAVEPOINT hauv kev lag luam;
- RELEASE SVEPOINT identifier; deletes lub savepoint ntawm ib tug lw.Thaum tsis muaj kev teev tseg savepoint, executing nqe lus no yuav pov ib qho kev zam;
- ROLLBACK TO identifier; yob rov qab qhov kev hloov pauv mus rau qhov cim cim;
- SET TRANSACTION; siv los teeb tsa theem kev sib cais ntawm kev sib pauv. Cov qib kev sib cais sib cais muab los ntawm InnoDB cia lub cav yog READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ thiab SERIALIZABLE.
Muaj ob txoj hauv kev tseem ceeb rau MYSQL kev ua lag luam:
1. Siv BEGIN, ROLLBACK, COMMIT los siv
- MUAB pib kev lag luam
- YOB kev lag luam rollback
- TSWV YIM kev lees paub kev lag luam
2. Siv SET ncaj qha los hloov MySQL's auto-commit hom:
- SETAUTOCOMMIT=0 Disable tsis siv neeg xa
- SETAUTOCOMMIT=1 Tig rau kev xa ntawv tsis siv neeg
Kev kuaj kev lag luam
mysql> use chenweiliang; Database changed mysql> CREATE TABLE chenweiliang_transaction_test( id int(5)) engine=innodb; # 创建数据表 Query OK, 0 rows affected (0.04 sec) mysql> select * from chenweiliang_transaction_test; Empty set (0.01 sec) mysql> begin; # 开始事务 Query OK, 0 rows affected (0.00 sec) mysql> insert into chenweiliang_transaction_test value(5); Query OK, 1 rows affected (0.01 sec) mysql> insert into chenweiliang_transaction_test value(6); Query OK, 1 rows affected (0.00 sec) mysql> commit; # 提交事务 Query OK, 0 rows affected (0.01 sec) mysql> select * from chenweiliang_transaction_test; +------+ | id | +------+ | 5 | | 6 | +------+ 2 rows in set (0.01 sec) mysql> begin; # 开始事务 Query OK, 0 rows affected (0.00 sec) mysql> insert into chenweiliang_transaction_test values(7); Query OK, 1 rows affected (0.00 sec) mysql> rollback; # 回滚 Query OK, 0 rows affected (0.00 sec) mysql> select * from chenweiliang_transaction_test; # 因为回滚所以数据没有插入 +------+ | id | +------+ | 5 | | 6 | +------+ 2 rows in set (0.01 sec) mysql>
Siv cov piv txwv pauv hauv PHP
MySQL ORDER BY test:
<? php $dbhost = 'localhost:3306'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn, "set names utf8"); mysqli_select_db( $conn, 'chenweiliang' ); mysqli_query($conn, "SET AUTOCOMMIT=0"); // 设置为不自动提交,因为MYSQL默认立即执行 mysqli_begin_transaction($conn); // 开始事务定义 if(!mysqli_query($conn, "insert into chenweiliang_transaction_test (id) values(8)")) { mysqli_query($conn, "ROLLBACK"); // 判断当执行失败时回滚 } if(!mysqli_query($conn, "insert into chenweiliang_transaction_test (id) values(9)")) { mysqli_query($conn, "ROLLBACK"); // 判断执行失败时回滚 } mysqli_commit($conn); //执行事务 mysqli_close($conn); ?>
Cia siab Chen Weiliang Blog ( https://www.chenweiliang.com/ ) qhia "MySQL Database Transaction Rollback Isolation/Opening Concept/Level Processing PHP Statement", uas yuav pab tau rau koj.
Zoo siab txais tos los qhia qhov txuas ntawm kab lus no:https://www.chenweiliang.com/cwl-494.html
Zoo siab txais tos rau Telegram channel ntawm Chen Weiliang blog kom tau txais qhov hloov tshiab tshiab!
📚 Daim ntawv qhia no muaj nuj nqis loj, 🌟Qhov no yog lub sijhawm tsis tshua muaj, tsis txhob nco nws! ⏰⌛💨
Share thiab like yog tias koj nyiam!
Koj qhov kev sib koom thiab kev nyiam yog peb qhov kev txhawb nqa tas mus li!