0

在我的應用程序(客戶端 - 服務器)中,我需要編輯一些行(來自數據庫),只要它們被編輯,它也不需要任何人編輯。這當然是由交易完成的。問題在於,在客戶端環境中,事務是在服務器端進行管理的,因此編輯行的客戶端無法直接訪問事務。 (在這種情況下,我正在使用PHP,但認爲其他技術也採用了相同的方法)。所以我需要保持事務處於打開狀態(保持行鎖定以便編輯),直到客戶端完成編輯。 在PHP中,持久連接不會有幫助,因爲它們可以與位於與上述客戶端位於同一主機中的其他客戶端斷開。你對我的場景有任何想法嗎?客戶端 - 服務器方法中的持久事務

謝謝。

回答

1

通常這種情況是通過您直接在對象上設置的商業鎖處理的,或者是在對象的父級上設置的。

添加一列這樣的「inedition」你設置爲編輯真當用戶要求,並設置爲false,當用戶驗證/取消其編輯。

要知道,有些用戶的交易可能你解開行之前就完了,所以你可能需要:

  • 要麼解鎖行
  • ,無論是從functionnal屏幕的週期性治療用戶或管理員可以解鎖鎖定的行。

編輯: 只要您不想依賴數據庫特定功能,例如Oracle「Select for update」,就可以使用這種解決方案。在Java中,EJB statefull bean可以保持對從UI到數據庫的事務的引用。根據數據庫的不同,可能存在使用PHP for Oracle或其他數據庫特定功能的解決方案。