php 脏数据,脏数据和时间戳,还有数据一致性校验
今天在開發補貨管理模塊時,要新增加一個接口,功能是可以修改補貨管理表里的訂單狀態。
在數據庫里,由一個orderStatus字段來表示訂單的當前狀態,而這個狀態可以由兩種用戶角色進行修改。一個是加工廠,另一個是供應商。之前在寫方法的時候,還沒體會到數據一致性的問題。但是昨天由老歐寫了一個接口給我看了之后,發現比我寫的方法多用到了表里的lastModifiedOn和modifiedBy字段。來校驗數據。心里有些疑惑,就讓他給我講講這方面的東西。
他說:A在修改狀態的時候,從前端獲取到的狀態是1,要將其修改成3.但是在這個過程中,B用戶已經把狀態修改成2了,那么,A獲取到的狀態1,就成為臟數據。:
臟數據在臨時更新(臟讀)中產生。事務A更新了某個數據項X,但是由于某種原因,事務A出現了問題,于是要把A回滾。但是在回滾之前,另一個事務B讀取了數據項X的值(A更新后),A回滾了事務,數據項恢復了原值。事務B讀取的就是數據項X的就是一個“臨時”的值,就是臟數據。
在項目里:整個業務流程由spo.tpl? ? spo.controller.php? ? spo.SCA.php? ? spo.model.php 組成。
tpl顯示數據,controller組織數據,SCA發布接口,model實現接口。A用戶在修改tpl上顯示的數據的時候,一起取到了
在每次更新數據時,都必須執行這一步。不然老歐很生氣!后果很嚴重!
(PS:為什么MySQL里用來表示時間戳的字段要用datetime來存儲而不用INT來存儲unix時間呢,一個int比datetime更快,另外也不用考慮時區的問題,更方便。明天得問下他才行。)
總結
以上是生活随笔為你收集整理的php 脏数据,脏数据和时间戳,还有数据一致性校验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php短信接口加密_PHP短信接口、PH
- 下一篇: php flash chart,open