Sengoli sa Lingoloa
MySQL databaseHo itšehla thajana ha transaction rollback/ho bula mohopolo/level process php statements
MySQL Litaba
Litšebelisano tsa MySQL li sebelisoa haholo ho sebetsana le data ka ts'ebetso e kholo le ho rarahana ho phahameng.Ka mohlala, tsamaisong ea tsamaiso ea basebetsi, haeba u hlakola motho, u lokela ho hlakola tlhahisoleseding ea motheo ea motho, hape u hlakole tlhahisoleseding e amanang le motho, joalo ka lebokose la poso, lihlooho, joalo-joalo. lipolelo tsa ts'ebetso li theha khoebo. !
- Ho MySQL, ke li-database kapa litafole feela tse sebelisang ts'ehetso ea enjine ea database ea Innodb.
- Ts'ebetso ea transaction e ka sebelisoa ho boloka bots'epehi ba database le ho netefatsa hore lihlopha tsa lipolelo tsa SQL li ka etsoa kaofela kapa ha li etsoe ho hang.
- Lichelete li sebelisoa ho laola ho kenya, ho ntlafatsa le ho hlakola lipolelo
Ka kakaretso, litšebelisano li tlameha ho kopana le maemo a mane (ACID): Atomicity (atomicity), Consistency (stability), Isolation (ho itšehla thajana), Durability (ts'epehi)
- 1,Atomicity ea transactions:Sehlopha sa litšebelisano se ka atleha kapa se tlosoa.
- 2,botsitso:Ho na le data e seng molaong (lithibelo tsa linotlolo tsa kantle ho naha le tse ling tse joalo), 'me transaction e tlosoa.
- 3,Ho behwa ka thoko:Litšebelisano li sebetsa ka bohona.Haeba sephetho sa khoebo e 'ngoe se ama lipehelo tse ling, tse ling li tla tlosoa.100% ho itšehla thajana ea litšebelisano ho hloka lebelo la ho itela.
- 4,ho tšepahala:Kamora ho senyeha ha software kapa hardware, mokhanni oa tafole ea data ea InnoDB o tla sebelisa faele ea log ho e hlophisa bocha le ho e fetola.Ho tšepahala le lebelo le holimo ha li tsamaisane.Khetho ea innodb_flush_log_at_trx_commit e etsa qeto ea hore na ho bolokoa litransekshene neng ho log.
Tlas'a litlhophiso tsa kamehla tsa mohala oa taelo oa MySQL, litšebelisano li etsoa ka bo eona, ke hore, ts'ebetso ea COMMIT e tla etsoa hang ka mor'a ho phethahatsa polelo ea SQL.Ka hona, ho qala transaction ka mokhoa o hlakileng, o tlameha ho sebelisa taelo BEGIN kapa QALA TRANSACTION, kapa u phethe taelo SET AUTOCOMMIT=0 ho tima ts'ebeliso ea boitlamo ba othomathiki bakeng sa seboka sa hajoale.
Polelo ea taolo ea transaction:
- QALA kapa QALA TRANSACTION, qala khoebo ka mokhoa o hlakileng;
- IKEMISA; u ka boela ua sebelisa COMMIT WORK, empa lia lekana. COMMIT e etsa transaction mme e etsa hore litokiso tsohle tse entsoeng polokelong ea database li be teng kamehla;
- ROLLBACK; o ka sebelisa ROLLBACK WORK, empa lia lekana.Rollback e tla felisa tšebetso ea mosebelisi le ho etsolla litokiso tsohle tse ntseng li tsoela pele;
- Sekhetho sa SAVEPOINT; SAVEPOINT e lumella ho theha sebaka sa polokelo khoebong, 'me ho ka ba le li-SAVEPOINT tse ngata khoebong;
- RELEASE SAVEPOINT identifier, hlakola sebaka sa polokelo ea transaction Ha ho se na sebaka sa polokelo se boletsoeng, ho phethahatsa polelo ena ho tla etsa mokhelo;
- ROLLBACK HO identifier; khutlisetsa transaction sebakeng sa ho tšoaea;
- SET TRANSACTION; e sebelisetsoang ho beha boemo ba ho itšehla thajana ba transaction. Maemo a ho itšehla thajana a fanoeng ke enjine ea polokelo ea InnoDB ke BALA U SA TLAMEHA, BALA HO ITLAMELA, REPEATABLE BALA le SERIALIZABLE.
Ho na le mekhoa e 'meli ea mantlha ea ts'ebetso ea transaction ea MYSQL:
1. Sebelisa BEGIN, ROLLBACK, COMMIT ho kenya ts'ebetsong
- QALA qala khoebo
- PUSELETSO RAKHOLO phetisetso ea ho khutlisa
- ITLAMA netefatso ya kgwebisano
2. Sebelisa SET ka ho toba ho fetola mokhoa oa ho iketsetsa boitlamo oa MySQL:
- SETAUTOCOMMIT=0 Thibela ho fana ka boiketsetso
- SETAUTOCOMMIT=1 Bulela ho romela ka boiketsetso
Teko ea transaction
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>
Ho sebelisa maemo a transaction ho 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); ?>
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) o ile a arolelana "MySQL Database Transaction Rollback Isolation/Opening Concept/Level Processing PHP Statement", e tla u thusa.
Rea u amohela ho arolelana sehokelo sa sengoloa sena:https://www.chenweiliang.com/cwl-494.html
Rea u amohela ho mocha oa Telegraph oa blog ea Chen Weiliang ho fumana lintlha tsa morao-rao!
📚 Tataiso ena e na le boleng bo boholo, 🌟Ona ke monyetla o sa tloaelehang, se ke oa o fetoa! ⏰⌛💨
Share le rata haeba u rata!
Ho arolelana le lintho tseo u li ratang ke khothatso ea rona e tsoelang pele!