當DataSnap客戶端應用程序連接到DataSnap服務器的遠程數據模塊並使用TDataSetProvider
+ TClientDataSet
時,它會緩存客戶端應用程序本地的數據庫表(或視圖)。用戶可以在本地對TClientDataSet中的數據進行更改,並將更改與服務器同步。這一切都有道理。使用公文包模式的本地TClientDataSet上的主鍵
使用SQL Server 2008數據庫,主鍵可以是identity
或GUID
字段。假設用戶將離線而他們新記錄添加到本地TClientDataSet
,請問該主鍵字段的地方TDataSetProvider
和TClientDataSet
手柄分配當用戶創建一個新的記錄?由於本地創建的記錄可能是主/關係關係的一部分,因此在本地創建新主鍵需要似乎是合理的。當用戶執行「ApplyUpdates(0)」時如何解決這個問題?
當多個用戶創建離線模式記錄,怎麼也主鍵衝突解決時,他們每做一個ApplyUpdates(0)
?
是identity
字段好於GUID
字段,或反之亦然?爲什麼?
可能重複的[你喜歡你的主鍵?](http://stackoverflow.com/questions/404040/how-do-you-like-your-primary-keys) – JNK
該文章是一般性討論什麼樣的主鍵最好。我的問題是,當TDataSetProvider和TClientDataSet在高速緩存的數據集中創建離線主鍵以及當用戶通過調用ApplyUpdates(0)同步其本地高速緩存與服務器時,這些組件是如何處理主鍵的。當使用「身份」或「GUID」字段時,組件處理主鍵的方式可能存在問題 - 因此,問題是哪個最好。 –