VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

IDENTITY

功能描述

Vastbase在SQL Server兼容模式下支持IDENTITY函数,该函数用于在SELECT INTO语句生成的表中新增一个具有IDENTITY属性的字段。

被该属性修饰的字段即为表的标识列,标识列的值具有自动增加的特性。

SELECT INTO用于根据查询结果创建一个新表,并且将查询到的数据插入到指定的新表中。

注意事项

  • 该功能仅在数据库兼容模式为SQL Server时支持(即数据库实例初始化时指定DBCOMPATIBILITY='MSSQL')。
  • 一个表最多只能有一个IDENTITY标识列。
  • 函数的seed参数与increment参数必须同时指定,否则将报错。

语法格式

IDENTITY ( data_type [ , seed , increment ] ) AS column_name

参数说明

  • data_type

    标识列的数据类型。

    标识列的有效数据类型可以是任何整数类别的数据类型(bit类型除外),也可以是DECIMAL数据类型。

  • seed

    要分配给表中第一行标识列的整数值。

    后续每一行标识列的值,等于上一个IDENTITY值加上increment值。如果既没有指定seed,也没有指定increment,那么它们都默认为1。

  • increment

    两个相邻标识值之间的差值。

  • column_name

    将插入到新表中的标识列的名称。

示例

示例1: SELECT INTO语句中使用identity函数,仅指定标识列的数据类型data_type。

1、创建测试表并插入数据。

create table test(col text, age int);
insert into test values('张三',11);
insert into test values('李四',12);
insert into test values('王五',13);

2、执行select into语句,使用测试表的数据创建新表test_int,并为新表指定标识列id,数据类型为int。

select identity(int) as id, col, age into test_int from test;

3、查看test_int的数据。

select * from test_int;

返回结果如下:

 id | col  | age
----+------+-----
  1 | 张三 |  11
  2 | 李四 |  12
  3 | 王五 |  13
(3 rows)

示例2: SELECT INTO语句中使用identity函数,同时指定标识列的起始值与增长值。

1、创建测试表并插入数据。

create table test2(col text, age int);
insert into test2 values('张三',11);
insert into test2 values('李四',12);
insert into test2 values('王五',13);

2、执行select into语句,使用测试表的数据创建新表test_int2,并为新表指定标识列id,起始值为5,每行增长值为10。

select identity(int,5,10) as id, col, age into test_int2 from test2;

3、查看测试表数据。

select * from test_int2;

返回结果如下:

 id | col  | age
----+------+-----
  5 | 张三 |  11
 15 | 李四 |  12
 25 | 王五 |  13
(3 rows)