DM 支持 INT 和 BIGINT 两种数据类型的自增列,并提供以下函数查看表上自增列的当前值、种子和增量等信息:
将需要操作的表名以重命名的方式进行备份
ALTER TABLE TABLE_3 rename TO TABLE_2
右击已重命名的表名TABLE2,选择【生成SQL脚本】-> 【Create to】-> 【新SQL编辑器】
将创建表的语法粘贴到新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) ;
语法格式
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表中,要注意加上列名
如果列名比较多的话,可以右击表名,【生成SQL脚本】,选择【insert to】,自动获所有列,记得修改表名。
执行以下sql,开启自增长
SET IDENTITY_INSERT "SYSDBA"."TABLE_3" OFF
文章
阅读量
获赞