使用序列生成的ID或备用方式查询DB

时间:2012-03-30 07:07:59

标签: templates primary-key sequence letter

我们目前在数据库中维护一组模板。在应用程序中,我们在UI中提供了一个下拉列表,允许用户选择他们想要用来创建基于该模板的字母的模板。因此,我们正在显示模板的描述,选择后我们将templateID传递给数据库以检索模板。

现在,我们有一个新要求,即从模板生成一个没有UI的字母来选择模板的类型。我的意思是,应用程序从中执行操作以调用生成字母本身的特定点用于标识要使用的特定模板。所以,我的问题是我传递什么来查询数据库以返回存储的模板。我知道我需要使用templateID。我的问题是每次将模板添加到系统时,此模板ID都是由序列生成的。因此,只有在将此模板添加到系统后,才能知道templateID,然后在调用动作生成字母时使用该templateID。因此,这意味着在将模板记录添加到系统后进行更改。这将涉及代码更改,或者如果不是配置文件中的更改,则将序列生成的ID映射到应用程序所需的模板。

所以,我的问题是我应该在调用字母生成时传递anotherIdentifier,然后通过配置文件将该标识符映射到数据库中生成的序列,并在每次将新模板添加到数据库时更新此配置文件系统。有没有更好的方法来解决这个问题。

1 个答案:

答案 0 :(得分:0)

听起来你在说你的系统

  • 存储模板,以及
  • 允许用户在运行时创建模板。

您无法推断在运行时创建的模板的模板ID号。您似乎知道现有模板的ID号。 (我可能错了。)

任何允许您使用序列生成器插入行的dbms,无论调用哪个生成器,都将为您提供一种方法,以便找出它为您提供的最后一个ID号。 PostgreSQL是一个常见的开源dbms;它提供了几个这样的功能。一个是nextval(),它递增序列并返回新值。它在多用户环境中是安全的;它总是返回你的新值,而不是别人的。

您需要检查dbms文档以了解它提供的功能,以及它们的功能和限制。