电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

PHP數(shù)據(jù)庫抽象層之PDO(三)——事務(wù)與自動提交

瀏覽:168日期:2022-09-15 15:53:06

現(xiàn)在通過 PDO 連接上了,在開始進行查詢前,必須先理解 PDO 是如何管理事務(wù)的。事務(wù)支持四大特性(ACID):原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)以及持久性(Durability)。通俗地講,在一個事務(wù)中執(zhí)行的任何操作,即使是分階段執(zhí)行的,也能保證安全地應(yīng)用于數(shù)據(jù)庫,并在提交時不會受到來自其他連接的干擾。事務(wù)操作也可以根據(jù)請求自動撤銷(假設(shè)還沒有提交),這使得在腳本中處理錯誤更加容易。

事務(wù)通常是通過把一批更改“積蓄”起來然后使之同時生效而實現(xiàn)的;這樣做的好處是可以大大地提供這些更改的效率。換句話說,事務(wù)可以使腳本更快,而且可能更健壯(不過需要正確地使用事務(wù)才能獲得這樣的好處)。

不幸的是,并非每種數(shù)據(jù)庫都支持事務(wù),因此當(dāng)?shù)谝淮未蜷_連接時,PDO 需要在所謂的“自動提交”模式下運行。自動提交模式意味著,如果數(shù)據(jù)庫支持,運行的每個查詢都有它自己的隱式事務(wù),如果數(shù)據(jù)庫不支持事務(wù),則沒有。如果需要一個事務(wù),則必須用?PDO::beginTransaction()?方法來啟動。如果底層驅(qū)動不支持事務(wù),則拋出一個 PDOException 異常(不管錯誤處理設(shè)置是怎樣的,這都是一個嚴重的錯誤狀態(tài))。一旦開始了事務(wù),可用?PDO::commit()?或?PDO::rollBack()來完成,這取決于事務(wù)中的代碼是否運行成功。

PDO 僅在驅(qū)動層檢查是否具有事務(wù)處理能力。如果某些運行時條件意味著事務(wù)不可用,且數(shù)據(jù)庫服務(wù)接受請求去啟動一個事務(wù),PDO::beginTransaction()?將仍然返回?TRUE?而且沒有錯誤。

試著在 MySQL 數(shù)據(jù)庫的 MyISAM 數(shù)據(jù)表中使用事務(wù)就是一個很好的例子。

當(dāng)腳本結(jié)束或連接即將被關(guān)閉時,如果尚有一個未完成的事務(wù),那么 PDO 將自動回滾該事務(wù)。這種安全措施有助于在腳本意外終止時避免出現(xiàn)不一致的情況——如果沒有顯式地提交事務(wù),那么假設(shè)是某個地方出錯了,所以執(zhí)行回滾來保證數(shù)據(jù)安全。

只有通過?PDO::beginTransaction()?啟動一個事務(wù)后,才可能發(fā)生自動回滾。如果手動發(fā)出一條查詢啟動事務(wù), 則 PDO 無法知曉,從而在必要時不能進行回滾。

Example #1 在事務(wù)中執(zhí)行批處理

在下面例子中,假設(shè)為新員工創(chuàng)建一組條目,分配一個為23的ID。除了登記此人的基本數(shù)據(jù)之外,還需要記錄他的工資。兩個更新分別完成起來很簡單,但通過封閉在PDO::beginTransaction()?和?PDO::commit()?調(diào)用中,可以保證在更改完成之前,其他人無法看到這些更改。如果發(fā)生了錯誤,catch 塊回滾自事務(wù)啟動以來發(fā)生的所有更改,并輸出一條錯誤信息。

<?php try {$dbh = new PDO(’odbc:SAMPLE’, ’db2inst1’, ’ibmdb2’, array(PDO::ATTR_PERSISTENT => true));echo 'Connectedn'; } catch (Exception $e) {die('Unable to connect: ' . $e->getMessage()); } try {$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);$dbh->beginTransaction();$dbh->exec('insert into staff (id, first, last) values (23, ’Joe’, ’Bloggs’)');$dbh->exec('insert into salarychange (id, amount, changedate) values (23, 50000, NOW())');$dbh->commit(); } catch (Exception $e) {$dbh->rollBack();echo 'Failed: ' . $e->getMessage(); }?>

并不局限于在事務(wù)中更改,也可以發(fā)出復(fù)雜的查詢來提取數(shù)據(jù),還可以使用那些信息來構(gòu)建更多的更改和查詢;當(dāng)事務(wù)激活時,可以保證其他人在操作進行當(dāng)中無法作出更改。

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 皮带输送机-大倾角皮带输送机-皮带输送机厂家-河南坤威机械 | 华禹护栏|锌钢护栏_阳台护栏_护栏厂家-华禹专注阳台护栏、楼梯栏杆、百叶窗、空调架、基坑护栏、道路护栏等锌钢护栏产品的生产销售。 | 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 棉服定制/厂家/公司_棉袄订做/价格/费用-北京圣达信棉服 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 聚合甘油__盐城市飞龙油脂有限公司| 森旺-A级防火板_石英纤维板_不燃抗菌板装饰板_医疗板 | 贵阳用友软件,贵州财务软件,贵阳ERP软件_贵州优智信息技术有限公司 | 电机修理_二手电机专家-河北豫通机电设备有限公司(原石家庄冀华高压电机维修中心) | YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | 活性炭厂家-蜂窝活性炭-粉状/柱状/果壳/椰壳活性炭-大千净化-活性炭 | 扬子叉车厂家_升降平台_电动搬运车|堆高车-扬子仓储叉车官网 | 医疗仪器模块 健康一体机 多参数监护仪 智慧医疗仪器方案定制 血氧监护 心电监护 -朗锐慧康 | 一级建造师培训_一建培训机构_中建云筑建造师培训网校 | 消防设施操作员考试报名时间,报名入口,报考条件 | 首页-恒温恒湿试验箱_恒温恒湿箱_高低温试验箱_高低温交变湿热试验箱_苏州正合 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 冷却塔降噪隔音_冷却塔噪声治理_冷却塔噪音处理厂家-广东康明冷却塔降噪厂家 | 谈股票-今日股票行情走势分析-牛股推荐排行榜 | 干法制粒机_智能干法制粒机_张家港市开创机械制造有限公司 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 称重传感器,测力传感器,拉压力传感器,压力变送器,扭矩传感器,南京凯基特电气有限公司 | 河南包装袋厂家_河南真空袋批发价格_河南服装袋定制-恒源达包装制品 | 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 等离子空气净化器_医用空气消毒机_空气净化消毒机_中央家用新风系统厂家_利安达官网 | 烟雾净化器-滤筒除尘器-防爆除尘器-除尘器厂家-东莞执信环保科技有限公司 | 卷筒电缆-拖链电缆-特种柔性扁平电缆定制厂家「上海缆胜」 | 层流手术室净化装修-检验科ICU改造施工-华锐净化工程-特殊科室建设厂家 | 钛板_钛管_钛棒_钛盘管-无锡市盛钛科技有限公司| 自动记录数据电子台秤,记忆储存重量电子桌称,设定时间记录电子秤-昆山巨天 | 北京发电机出租_发电机租赁_北京发电机维修 - 河北腾伦发电机出租 | 济南电缆桥架|山东桥架-济南航丰实业有限公司 | 氢氧化钙设备, 氢氧化钙生产线-淄博惠琛工贸有限公司 | 法钢特种钢材(上海)有限公司 - 耐磨钢板、高强度钢板销售加工 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 防爆正压柜厂家_防爆配电箱_防爆控制箱_防爆空调_-盛通防爆 | 紧急泄压人孔_防爆阻火器_阻火呼吸阀[河北宏泽石化] | ASA膜,ASA共挤料,篷布色母料-青岛未来化学有限公司 | 广东高华家具-公寓床|学生宿舍双层铁床厂家【质保十年】 | 民用音响-拉杆音响-家用音响-ktv专用音响-万昌科技 | 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 |