赞
踩
在DM 数据库中,自增有两种方法实现,一种是自增列,另一种通过序列实现。
1 自增列
1.1 创建自增列
在创建表时可以制定列是否自增。 一个表只能有一个自增列。
语法格式https://www.cndba.cn/cndba/dave/article/3590
IDENTITY [ (种子, 增量) ]
https://www.cndba.cn/cndba/dave/article/3590
参数
1.种子:装载到表中的第一个行所使用的值;
2.增量:增量值,该值被添加到前一个已装载的行的标识值上。增量值可以为正数或负数,但不能为 0。
1.IDENTITY 适用于 int(-2147483648~+2147483647)、bigint(-2^63~+2^63-2)类型的列;每个表只能创建一个自增列;
2.不能对自增列使用 DEFAULT 约束;
3.必须同时指定种子和增量值,或者二者都不指定。如果二者都未指定,则取默认值(1,1);若种子或增量为小数类型,报错;
4.最大值和最小值为该列的数据类型的边界;
5.建表种子和增量大于最大值或者种子和增量小于最小值时报错;
6.自增列一旦生成,无法更新,不允许用 Update 语句进行修改;https://www.cndba.cn/cndba/dave/article/3590
临时表、列存储表、水平分区表、垂直分区表不支持使用自增列。
SQL> create table HuaiNing(id int identity,name varchar(20));
executed successfully
used time: 6.902(ms). Execute id is 551.
SQL>
SQL> desc huaining
LINEID NAME TYPE$ NULLABLE
---------- ---- ----------- --------
1 ID INTEGER N
2 NAME VARCHAR(20) Y
used time: 12.016(ms). Execute id is 552.
SQL>
1.2 自增列查询函数
1)IDENT_SEED (‘tablename’) : 返回种子值,该值是在带有自增列的表中创建自增列时指定的。
SQL> select ident_seed('CNDBA.HUAINING');
LINEID IDENT_SEED('CNDBA.HUAINING')
---------- ----------------------------
1 1
used time: 2.280(ms). Execute id is 553.
SQL>
2)IDENT_INCR (‘tablename’):返回增量值,该值是在带有自增列的表中创建自增列时指定的。
SQL> select ident_incr('CNDBA.HUAINING');
LINEID IDENT_INCR('CNDBA.HUAINING')
---------- ----------------------------
1 1
used time: 2.114(ms). Execute id is 555.
SQL>
3)SET IDENTITY_INSERT 属性: 设置是否允许将显式值插入表的自增列中。
语法格式:
SET IDENTITY_I
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。