注册
DM8,自增列管理
专栏/Database Thinking/ 文章详情 /

DM8,自增列管理

胡li 2021/10/09 6829 6 0
摘要 自增列支持类型;当一个表的 IDENTITY_INSERT 属性被设置为 ON 时,该表中的自动增量列的值由用户指定;将表中的某列转换成自增列且以前存在的数据不变,从当前最大值开始实现自增

DM 支持 INT 和 BIGINT 两种数据类型的自增列,并提供以下函数查看表上自增列的当前值、种子和增量等信息:

  1. IDENT_CURRENT:获得表上自增列的当前值;
  2. IDENT_SEED:获得表上自增列的种子信息;
  3. IDENT_INCR:获得表上自增列的增量信息。

一、备份表名

将需要操作的表名以重命名的方式进行备份

ALTER TABLE TABLE_3 rename  TO TABLE_2

二、创建表

右击已重命名的表名TABLE2,选择【生成SQL脚本】-> 【Create to】-> 【新SQL编辑器】
1.png

将创建表的语法粘贴到新SQL编辑器后,,将表名修改成重命名前的表名,将id列的类型修改成int或者bigint类型,再加上自增列的当前值和增长值,其他语法不变,SQL如下所示:

CREATE TABLE "SYSDBA"."TABLE_3"
 
(
 
"id" int NOT NULL IDENTITY(1, 1),
 
"name" VARCHAR2(50),
 
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;

2.png

语法格式
IDENTITY [ (种子, 增量) ]

三、会话级关闭自增长

执行以下sql,关闭自增长,可由用户自己输入数据

SET IDENTITY_INSERT "SYSDBA"."TABLE_3"  ON

使用说明
1.IDENTITY_INSERT 属性的默认值为 OFF。SET IDENTITY_INSERT 的设置是在执行或运行时进行的。当一个连接结束,IDENTITY_INSERT 属性将被自动还原为 OFF;
2.DM 要求一个会话连接中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON,当设置一个新的表 IDENTITY_INSERT 属性设置为 ON 时,之前已经设置为 ON 的表会自动还原为 OFF。当一个表的 IDENTITY_INSERT 属性被设置为 ON 时,该表中的自动增量列的值由用户指定。如果插入值大于表的当前标识值(自增列当前值),则 DM 自动将新插入值作为当前标识值使用,即改变该表的自增列当前值;否则,将不影响该自增列当前值;
3.当设置一个表的 IDENTITY_INSERT 属性为 OFF 时,新插入行中自增列的当前值由系统自动生成,用户将无法指定;
4.自增列一经插入,无法修改;
5.手动插入自增列,除了将 IDENTITY_INSERT 设置为 ON,还要求在插入列表中明确指定待插入的自增列列名。插入方式与非 IDENTITY 表是完全一样的。如果插入时,既不指定自增列名也不给自增列赋值,则新插入行中自增列的当前值由系统自动生成;
6. WITH REPLACE NULL 此模式下允许显式插入 NULL 值,同时,系统自动将 NULL值替换为自增值。

四、插入数据

创建好表后,再利用insert … select …语法将TABLE2的数据插入到新创建的TABLE3表中,要注意加上列名

3.png

如果列名比较多的话,可以右击表名,【生成SQL脚本】,选择【insert to】,自动获所有列,记得修改表名。

五、完成普通列转换成自增

执行以下sql,开启自增长

SET IDENTITY_INSERT "SYSDBA"."TABLE_3"  OFF
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服