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)