简介 【程序编程相关:JavaMail API 实施业务逻辑】
【推荐阅读:专家访谈: Connie Nelin 谈】 生成列是 ibm® db2® universal database™ 的一个便捷特性. 一个生成列(generated column)是从表达式而不是从 insert 或 update 操作派生其值. 【扩展信息:使用 C++Builder 实现真正的 】生成列与标识列
请参考下列数据定义语言(ddl),它将在数据库中创建一个表: db2 create table db2admin.actor ( actor_id int generated by default as identity , actor_name varchar(20) , act_yr_of_birth smallint , act_yr_of_death smallint , age_at_death smallint generated always as (act_yr_of_death - act_yr_of_birth) ) in userspace1 db2 alter table db2admin.actor add primary key (actor_id)该 ddl 包含生成列的简单示例.通过使用下列表达式,age_at_death 列由 db2 自动生成:
act_yr_of_death - act_yr_of_birth = age_at_death通过在 create table 或 alter table 语句中为列指定 generated always as ... 子句,可以在表中创建生成列.
我的示例还包括特定类型的生成列(称为标识列)的定义. 标识列包含可由 db2 自动生成的数值.对于创建主键值而言,标识列确实有用.实际上,该示例包含一个 alter table 语句,它将 actor_id 列定义成 actor 表的主键.
始终由 db2 生成:db2 可以保证以 generated always 方式定义的标识列的唯一性,因为它的值始终是由 db2 生成的.
我使用了 可以一词,因为许多用户误解了这种唯一性保证.这可能对也可能不对,它取决于您如何定义标识列的属性.例如,假定您已经定义了一个标识列,它在最小值 1 与最大值 10 之间循环:根据定义,除非该表包含的行非常少(10 行或更少),否则该列中的值将不唯一.
保证列值唯一性的方法就是对列定义唯一性约束.上述表中的 actor_id 列之所以能够保证唯一性,是因为我使用了 alter table 命令将该列定义为表上的主关键字.... 下一页