2012-03-30 18 views
0

我們目前在DB中維護一組模板。在應用程序中,我們在用戶界面中提供了一個下拉列表,允許用戶選擇他們想用來創建基於該模板的字母的模板。因此,我們正在顯示模板的描述,選擇時我們將templateID傳遞給數據庫以檢索模板。使用序列生成的ID或備用方式查詢DB

現在,我們有了一個新的要求,即從沒有UI的模板生成一個字母來選擇模板的類型。我的意思是,應用程序中由用戶執行的調用生成字母本身的特定點用於識別要使用的特定模板。所以,我的問題是我通過什麼來查詢數據庫以返回存儲的模板。我知道我需要使用templateID。我的問題是這個templateID是每次將模板添加到系統時由序列生成的。因此,只有在將此模板添加到系統後,才能知道templateID,然後在調用動作來生成該字母時使用該模板ID。所以,這意味着將模板記錄添加到系統後會發生更改。這將涉及代碼更改,或者如果不是配置文件中的更改,以將應用程序所需的序列生成的ID映射到模板。

所以,我的問題是我應該在調用字母生成的同時傳遞另一個標識符,然後通過配置文件將該標識符映射到數據庫中生成的一個序​​列,並在每次添加新模板時更新此配置文件系統。有沒有更好的方法來解決這個問題。

+0

我決定繼續如下。在應用程序ID之前決定在應用程序的特定點中使用哪個applicationID,並將該applicationID本身作爲templateID添加到DB中的表中,而不是每次都使用序列生成templateID。因此,applicationID將是唯一的,並且每次將模板添加到系統時都會添加。因爲,已經決定可以直接在應用程序中使用,而不需要任何配置文件進行映射。這似乎是要走的路嗎? – javauser 2012-04-03 04:52:25

回答

0

這聽起來像你說你的系統

  • 店模板,也可以
  • 讓用戶在運行時創建模板。

而且您在運行時創建模板時無法推導出模板ID號。您似乎知道現有模板的ID號。 (我可能是錯的。)

任何允許使用序列生成器插入行的dbms,無論調用哪個生成器,都會提供一種方法讓您找到它提供給您的最後一個id號。 PostgreSQL是一個常見的開源dbms;它提供了幾個這樣的功能。一個是nextval(),它將序列遞增並返回新值。它在多用戶環境中安全;它總是會返回您的新值,而不是其他人的。

你需要檢查你的DBMS文檔,找出哪些功能提供,以及他們的特點和侷限性。

+0

是的。系統可以選擇添加新模板,並允許用戶從這些模板創建字母。顯示用戶對模板的描述,並在選擇後傳遞給數據庫以檢索模板。現在,它是一個不同的場景。在應用程序中有一個頁面,通過該頁面必須從特定模板創建一個字母。所以,不需要顯示選擇模板的選項,而是直接傳遞templateid。一旦模板被添加到系統中,就會生成templateid。一次可以添加多個模板。這是我的問題。 – javauser 2012-04-11 17:13:20

相關問題