上一主题: 架构文件语法下一主题: TABLE_INFO 语句


TABLE 语句

在 CA SDM 数据库架构中定义逻辑表,然后在这些表中定义逻辑列(字段)。然后,通过映射语句(遵循 TABLE 语句)将这些逻辑表和列映射至由数据库管理系统使用的物理表和列。

注意:如果定义新表,则必须为该表定义一个映射语句。在本章的末尾对映射语句进行了说明,后面还有一个结合了 TABLE、TABLE_INFO 和映射语句的示例。

语法

TABLE table_name {field value_type field_attributes; [...]}

参数

TABLE

介绍 TABLE 语句。必须大写。您必须具有架构中每个逻辑表的 TABLE 语句。

table_name

数据库表的名称,例如,Call_Req。如果要添加数据库表,则可以指定任何以小写字母 z 开头的名称 (此举可避免与现有和将来的 CA SDM 表名称发生冲突的可能性)。如果要变更现有的表,请在其中一个 .sch 文件中找到该表并使用相同的名称。

field

表中逻辑列的名称,例如,id 或 desc。您必须按名称标识每列。如果添加表或向现有的表中添加列,则可以指定任何以小写字母 z 开头的名称;但是,字段名称不能以字符“_f”结尾(此举可避免与现有的和将来的 CA SDM 列名称发生冲突的可能性)。如果要变更现有的列,请在其中一个 .sch 文件中找到该列并使用相同的名称。

value_type

字段的数据类型。有效值是:

描述

STRING nn

nn 个字符的字符串。

INTEGER

32 位的数字。

LOCAL_TIME

自 1970 年 1 月 1 日以来的秒数。CA SDM 会自动将此数据类型重新格式化为指定的日期格式,例如:mm/dd/yy hh:mm:ss.

DURATION

一段时间(秒数)。

REAL

浮点数。

UUID

16 字节二进制值。

field_attributes

对字段的描述。有效值是:

描述

KEY

将此字段标识为主键,以用于标识使用 pdm_load 进行更新的记录。如果未指定默认主键标识,则用这个值。如果该字段为表中的主键,则必须指定该值。

NOT_NULL

指明该字段必须包含一个值。如果该字段为表中的主键,则必须指定该值。如果该字段不是主键,则该值可选。

REF other_table_name

指明该字段引用了其它表。无论该字段是否为主键,该值都为可选。

S_KEY

根据需要将该字段标识为次关键字,以用于标识使用 pdm_load 进行更新的记录。

UNIQUE

指定字段中的值必须唯一。如果该字段为表中的主键,则必须指定该值。如果该字段不是主键,则该值可选。

宏是在配置期间将转换为宏表示的值的同义词。您可以为数据类型或属性使用宏。如果要使用宏,您必须在 #include 语句中添加,以包括定义宏(包括路径名)的文件(通常与您的架构文件相对应)。必须在使用宏之前定义 include 语句。include 语句示例:

#include "../schema.mac"

以下是一些在 $ NX_ROOT/site (UNIX) 目录或 installation-directory/site (Windows) 目录中的 .mac 文件中定义的宏。

数据类型

等效

nn

NOT_NULL

uniq

UNIQUE NOT_NULL

ADDR_LINE

STRING 30

EMAILADDR

STRING 120

ENT_DESC

STRING 40

ENT_NAME

STRING 30

OSI_NAME

STRING 80

OSI_TYPE_STRING

STRING 60

USERID

STRING 85

PHONENUM

STRING 32

SYMBOL

STRING 12

HIER_SYM

STRING 60

LONG_SYM

STRING 30

COMMENT

STRING 1000

LONG_STR

STRING 500

LONG_DESC

STRING 240

BOOL

INTEGER

示例

数据库架构中的 TABLE 语句定义了 severity。宏 nn 指明在 del 字段中需要值。宏 uniq 指明需要值,并且值必须唯一:

#include :../schema.mac”
TABLE Severity {
   id        INTEGER uniq KEY;    // key id
   del       INTEGER nn;          // 0=present,1=gone
   sym       SYMBOL uniq S_KEY; // type symbol
   desc      ENT_DESC;            // non‑OSI specified column
}

此修改的 TABLE 语句使得“请求详细信息”窗口中的 Priority 字段为必需字段:

TABLE Call_Req {priority INTEGER NOT_NULL;}

此 TABLE 语句将一个 resolution code 字段添加至 Call_Req 表。该字段的内容为数字并且引用了 Resolution_Code 表。此引用使用户能够双击‑“请求详细信息”窗口上的“解决办法代码”字段以显示 Resolution_Code 表中的值:

TABLE Call_Req {zres_code INTEGER REF Resolution_Code;}