我們有兩個系統,一個是處理認證的身份管理系統,另一個是用戶訪問的應用程式(例如UserApp)(網站)。當一個用戶注冊時,用戶賬戶在身份管理系統和UserApp資料庫中被創建。這兩個系統之間的資料應該是同步的。因此,目前的代碼在用戶注冊時做了以下作業
資料被插入資料庫(使用Entity Framework)。情景:
什么是最好的處理方式?該應用程式是用 C# 和 SQL Server 開發的。
uj5u.com熱心網友回復:
你可以利用資料庫事務。你可以創建一個資料庫連接并打開它。第一行應該是BEGIN TRANSACTION。 這意味著你執行的任何后續的SQL INSERTS/UPDATES都不會被寫入,直到你運行COMMIT TRANSACTION陳述句。如果你想回滾該事務,你將呼叫ROLLBACK TRANACTION。
所以你可以:
Step 01: BEGIN TRANSACTION
步驟02: 執行INSERT陳述句。
如果SQL陳述句成功,你就知道資料庫已經啟動并可以訪問,而且這個步驟已經成功。只是該行還沒有被提交到資料庫中。
Step 03: 在INSERT陳述句成功后,再呼叫API
步驟 04: 如果API成功,那么COMMT TRANSACTION。
步驟05: 如果API失敗或出現例外,則ROLLBACK TRANACTION。
這樣一來:
- 如果 SQL 陳述句以任何方式失敗(DB down、T-SQL 錯誤等),你將提前退出
- 如果 API 呼叫失敗,你將提前退出。
- 如果 API 呼叫以任何方式失敗,你將提前退出 。
- 只有當INSERT和API成功時,你才提交SQL陳述句 。
如果 COMMIT 失敗
現在可能有一個很小的機會,由于電力損失或網路中斷,在那一秒提交失敗,等等。 在這種情況下,你將需要呼叫API來洗掉/停用你剛剛創建的用戶。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/327151.html
標籤:
上一篇:地圖外鍵JPA
