第五章 SQL定义表(二)
主键
InterSystems IRIS提供了两种方法来唯一标识表中的行:RowID和主键。
可选的主键是一个有意义的值,应用程序可以使用该值唯一地标识表中的行(例如,联接中的行)。主键可以是用户指定的数据字段,也可以是多个数据字段的组合。主键值必须是唯一的,但不必是整数值。 RowID是一个内部用于标识表中行的整数值。通常,主键是由应用程序生成的值,而RowID是由InterSystems IRIS生成的唯一整数值。
系统会自动创建一个主map,以使用RowID字段访问数据行。如果定义主键字段,系统将自动创建并维护主键索引。
显然,具有两个不同的字段和索引来标识行的双重性不一定是一件好事。可以通过以下两种方式之一解析为单个行标识符和索引:
- 使用应用程序生成的主键值作为
IDKEY。 可以通过使用关键字PrimaryKey和IdKey在类定义中标识主键索引来实现这一点(如果为此目的设置了PKey is IdKey标志,也可以在DDL中实现这一点)。 这使得主键索引成为表的主映射。 因此,主键将被用作行的主要内部地址。 如果主键包含多个字段,或者主键值不是整数,那么这种方法的效率会较低。 - 不要使用应用程序生成的主键值,而应在应用程序中使用系统生成的
RowID整数作为应用程序使用的主键(例如,在joins中)。