日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DevExperience(1712)

發布時間:2023/12/3 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DevExperience(1712) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【1】在 DML 或 DDL 語句中,不要添加 數據庫表前綴: 因為開發環境的數據庫表名 和 生產環境的數據庫表名 有可能不一樣; 這個時候就有可能報 SQL 異常;造成生產事故;
不推薦: select * from db_name.tbl_name where ....
推薦: select * from tbl_name?
當然了,也有可能開發環境的數據庫表名 與 ST測試環境 或 UAT測試環境的 數據庫表名 不一致;但這種錯誤都是可以在 測試階段測試出來的。但是一旦項目上了生產環境,你就不能改了。

【2】對于開啟數據庫事務的操作: 特別要注意事務回滾。
設想這樣一個場景:
有個班級表 class_tbl, 學生表 stu_tbl, 班級表有字段 學生數量 stu_num; 當執行刪除學生操作時,要級聯更新班級的學生數量 stu_num,其中通過學生來查詢需要更新的班級。?
方法1)先執行刪除學生操作, 然后通過學生(多)查詢班級(一)并更新班級的 學生數量: 這個時候,更新操作不會成功,因為更新時 需要通過學生來查詢需要更新哪個班級,但是學生記錄又被您先刪除了,所以更新失敗。。這個時候,更新失敗,事務回滾,被刪除的學生又恢復了(沒有刪除)。。

所以這個時候就有一個奇怪的現象: 數據庫當中明明有 這個學生記錄(事務回滾后,該學生從刪除狀態恢復到在庫狀態),那為什么無法通過該學生 去級聯更新班級的學生數量呢 ?? 那是因為你更新操作前,先在同一個事務中刪除了這個學生,所以這個學生是不存在的,無法執行級聯更新。。然后事務回滾,學生在數據庫中又沒有被刪除。。。。然后你就陷入了 泥潭,久久無法自拔啊。。。

方法2)先通過學生(多)查詢班級(一)并更新班級的 學生數量,再 執行刪除學生操作(推薦):? ?這種方法的更新班級的學生數量 和 刪除 學生記錄 的方法是比較好的,不會出現方法1那種 奇怪的情況;


【總結】有減必有加,所以當你 新增學生的時候,同樣的道理: 就要先執行更新學生數量操作,然后再執行新增學生操作;因為上述兩個操作都在同一個事務中,一旦發生異常,事務回滾,數據庫保持操作前后的數據一致性;


【3】關于數據分表權限拆分

1) 以四川省內的地級市 和 縣級市為荔枝: 首先數據庫表通過 地級市來分表,每個地級市一張表,如成都市的數據庫表后綴suffix都是028,達州市的數據庫表后綴是 0818;
每個表有字段 行政市id city_id 字段 用于存儲市編號,如 tbl_*_028 的 city_id=028;
2)設想這樣一種場景:因為成都天府國際機場修在簡陽市,所以作為縣級市的簡陽市,其所有數據都掛在了 成都028的數據庫表上,但通過 city_id=1214(假設簡陽的區號是1214)來標識它是簡陽的數據;
3)數據權限拆分需求: 地級市的用戶可以查看 地級市 和 旗下所有縣級市的數據,而縣級市只能查看自己的縣級市的數據,不能查看其它縣級市的數據:
只需要通過比較 數據庫表后綴suffix 與 city_id 是否相等來判斷:
若兩者相等,則表示地級市;
若兩者不相等,則表示縣級市;

【注意】上述數據權限拆分策略非常簡單,只需要使用 mybatis 的 if 標簽來判斷就可以了;


【4】




總結

以上是生活随笔為你收集整理的DevExperience(1712)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。