- CREATE TEMP TABLE 语句
使用 CREATE TEMP TABLE 语句在当前数据库中创建临时表。
语法
元素 | 描述 | 限制 | 语法 |
table | 声明表的名称 | 在会话中必须是唯一的。请参阅 命名临时表 | 标识符 |
用法
您必须具有数据库上的 Connect 特权才能创建临时表。该临时表只对创建它的用户可见。
如果您包含了可选的 IF NOT EXISTS 关键字,则当指定名称的临时表已经在当前数据库中注册过时,数据库服务器不采取任何操作(而不是向应用程序发送异常)。
您还可以使用 CREATE TEMP TABLE 语句在临时表上定义索引和约束。
在 DB-Access 中,如果您设置了 DBANSIWARN 则在 CREATE SCHEMA 语句外使用 CREATE TEMP TABLE 语句会生成警告。
在 ESQL/C 中,如果您使用 -ansi 标志或设置 DBANSIWARN环境变量则 CREATE TEMP TABLE 语句生成警告。
命名临时表
临时表是与会话而不是数据库关联在一起。创建临时表时,直到删除第一个临时表并结束会话之前都不能使用同样的名称创建另外一个临时表(即使是在另一个数据库中)。
临时表的名称必须遵循 SQL 标识符的要求,但是它不能是限定数据库对象的名称。当您使用 CREATE TEMP TABLE 语句创建临时表时,您不能指定任意授权标识符作为它的所有者。不像永久表,临时表不能在用 owner 名称,或 database 名称,或 database server 名称的限定其标识符的 SQL 语句中被引用。
临时表的名称必须与当前数据库中任何其它表、视图、序列对象或同义词的名称都不相同。否则,此临时表会优先于会话中其它任何具有相同名称的永久表。但是,您在此声明的临时表名称不必不同于同一数据库中其它用户声明的临时表名称。
如果您翻出一个跨数据库的 DML 语句,它引用了一个远程的永久表,但您本地的数据库中包含一个相同名称的临时表,DML 语句访问本地的临时表,而非远程的临时表。
CREATE TEMP TABLE 语句的列定义规范
使用 CREATE TEMP TABLE 语句的 Column Definition 段声明临时表的单列的数据类型和名称(以及缺省值和约束)。
列定义
元素 | 描述 | 限制 | 语法 |
column | 表中列的名称 | 在它的表中必须唯一 | 标识符 |
CREATE TEMP TABLE 语句的这一部分与 CREATE TABLE 语句的相应部分几乎相同。不同之处在于临时表只允许更少的约束类型:
- 不能在列上定义引用约束。
- 数据类型不能是 IDSSECURITYLABEL。
- 临时表不支持 SECURED WITH label 选项。
与创建永久表一样,对于内置字符类型的列(如 CHAR 、LVARCHAR 、NCHAR 、NVARCHAR 或 VARCHAR),任何显式或缺省存储大小规范都以字节为单位进行解释,除非 SQL_LOGICAL_CHAR 配置参数设置为启用数据类型声明的逻辑字符语义。有关支持多字节代码集的语言环境(如 UTF-8)中 SQL_LOGICAL_CHAR 设置的影响的详细信息,请参阅 GBase 8s 管理员参考手册,其中单个逻辑字符肯需要多个字节的存储空间。
单列约束格式
使用单列约束格式为临时表中的单列创建一个或多个数据完整性约束。
单列约束格式
它是 CREATE TABLE 语句支持的单列约束格式语法的子集。
您可以在这些章节中找到特定约束的详细信息。
约束 有关更多信息,请参阅
CHECK CHECK 子句
DISTINCT 使用 UNIQUE 或 DISTINCT 约束
NOT NULL 使用 NOT NULL 约束
NULL 使用 NULL 约束
PRIMARY KEY 使用 PRIMARY KEY 约束
UNIQUE 使用 UNIQUE 或 DISTINCT 约束
您定义在临时表上的约束总是启用的。
多列约束格式
使用多列约束格式将一个或多个列用约束关联起来。它是单列约束格式的备选方案,允许您用约束将多列关联起来 。
多列约束格式
元素 | 描述 | 限制 | 语法 |
column | 列或放置约束的列的名称 | 在表中必须是唯一的,但是在同一数据库中的不同表可以具有相同的名称 | 标识符 |
它是 CREATE TABLE 语句所支持的多列约束格式语法的子集。
它是 CREATE TEMP TABLE 的单列约束格式的备选方案,可用约束将多个列关联起来。您定义在临时表上的约束总是启用的。
您可以在这些章节中找到特定约束的详细信息。
约束 | 有关更多信息,请参阅 | 有关示例,请参阅 |
CHECK | CHECK 子句 | 在多个列上定义检查约束 |
DISTINCT | 使用 UNIQUE 或 DISTINCT 约束 | 多列约束格式的示例 |
PRIMARY KEY | 使用 PRIMARY KEY 约束 | 定义组合的主键和外键 |
UNIQUE | 使用 UNIQUE 或 DISTINCT 约束 | 多列约束格式的示例 |
另见唯一约束和唯一索引的区别章节。