< 上一课 | 下一课 >

课程 2.4:使用自动键生成

在上一课程中,设置了导航规则以确保用户为新的分类信息广告输入唯一标识。因为您并不希望使用 Web 站点的用户通过反复试验而窃取唯一标识,所以此过程是无益的并且不切实际。在本课程中,将设置自动键生成以便数据库对它包含的每条新记录自动给定一个唯一编号。

自动键生成是一个复杂的主题,但是简单说来,如果某一数据库为键生成保留了一个特殊的表,该数据库就可以选择新键。此表的某一列(增量器列)必须具有一组未使用过的键,而另一列(标识列)则必须具有从 1 开始的按顺序排列的一组号码。当数据库需要新键时,它从标识列为 1 的行取出键,然后获取一个新键以准备好供下一次使用。

要设置自动键生成,您必须对它的工作方式有所了解。要使用自动键生成,数据库必须为此设置一个表。此表具有两列:
  • 增量器列存储可用的键。当数据库需要新的唯一键时,它会从此列中检索一个唯一键。
  • 标识列是只有一个数字 1 的实例的数字列表。此列告知数据库要从增量器列中选择哪个键。标识列是键生成表的主键。

当数据库需要新的唯一键时,它会查找标识列值为 1 的行。此行的增量器列值保存下一个可用的键。数据库使用此键并更新表,以便下一次可以使用新键。

以下是一个键生成表的示例。此数据库的下一个可用键是什么?答案在该表后给出。
表 1. 键生成表
标识列 增量器列
3 78
4 3
1 65
2 12
此表中的下一个可用键为 65,原因是增量器列中的该键与标识列中的 1 在同一行中。

在从表中访存下一个可用键之后,就会更新表,以获得下一次需要的键。数据库还可以通过采用多行的增量器列值一次检索多个键。

简而言之,要使自动键生成工作,只需将键生成表设置为两列:一列是主键列,它用作标识列;另一列用于存储下一个可用键。必须使用这样一条记录来初始化此表:该记录的标识列值为 1,并且其增量器列值是第一个可供使用的键。一旦设置了这两列,您就可以开始使用自动键生成。

设置自动键生成

本教程附带提供的样本数据库具有一个名为 KEYS 的键生成表。如上所述,它的两个列将为每条新记录提供新的 ID 号。在这些步骤中,您将设置 create_record 关系记录以从 KEYS 表获取该记录的 ID 号。
  1. 在“项目资源管理器”视图中双击 new_record.jsp 页。
  2. 在“页数据”视图中双击 create_record 关系记录。将打开“配置关系记录”窗口。
  3. 单击复用现有记录或记录列表中的元数据定义使用数据库中的现有数据来填充记录,然后单击下一步
  4. 从下拉列表中选择数据库连接,然后单击下一步
  5. 在“配置关系记录”窗口中,位于右边的是一个链接列表。单击自动生成键。将打开键生成窗口。
  6. 选择使用自动键生成
  7. 单击以展开 W5SAMPLE 列表,然后单击 KEYS 表。
  8. 选择标识列字段中单击 KEY_ID
  9. 选择增量器列字段中,单击 NEXT_KEY

    由于广告标识只需要一个键,所以您将“一次访存的键数”设置保留为 1。如果需要多个键,那么此设置将使数据库一次选择所有键。

    “配置数据对象”窗口应类似于下图:

    “配置数据对象”窗口。

  10. 单击关闭以关闭键生成窗口,然后单击完成以应用更改。现在,将为每条新记录自动生成 ID 字段。接下来,您必须除去 ID 输入字段,以使得用户不能输入值。
  11. 通过单击 ID:文本将光标放在输入表单表的顶行中。
  12. 单击 > 删除 > 删除行
  13. 保存该页面。
(可选)如果想要看到正在为您生成哪个键,可以不删除 ID 号的输入组件,而是将它替换为绑定至 create_record 的 ID 列的输出组件。这时,自动生成的键将出现在表单顶部,但是用户不能够更改该键。

测试已完成的教程

当您准备发布 Web 应用程序时,将需要一个主管该 Web 应用程序的服务器,以便用户能够通过因特网访问 Web 站点。但是,要测试该 Web 站点,可以使用一个可用的运行时来模拟服务器以进行测试。要了解如何测试 Web 站点,请参阅课程 1.3:测试 Web 站点

课程要点

您已经完成了课程 2.4。在本课程中,学习了如何设置自动键生成。

< 上一课 | 下一课 >