赞
踩
达梦自增列有两种使用形式,identity与auto_increment
使用说明:
1、一个表只能有一个自增字段,且自增字段类型只能是int或者bigint
2、自增列必须是主键,其他限制请查看sql语言手册详细了解
一、创建自增列(两种方式)
1、默认起点1,步长1
- create table t_test1(id int primary key auto_increment) auto_increment=2;
- create table t_test2(id int primary key identity);
2、查看那些列使用了自增
- select b.owner, b.table_name, a.name COL_NAME, a.type$
- from SYS.SYSCOLUMNS a, dba_tables b, sys.sysobjects c
- where a.INFO2=1 --自增列
- and a.id =c.id
- and c.name = b.table_name
3、删除自增定义
- alter table t_test1 drop identity ;
- alter table t_test2 drop auto_increment;
二、auto_increment说明
实际与identity一样,只是为了兼容mysql语法,与mysql的自增有所区别,例如不能像mysql创建非主键自增列,也不能像mysql一样删除自增建使用alter table t_test modify column id int(11)方式删除自增定义,以下是一个自增列删除迁移到达梦的存储过程例子
- CREATE OR REPLACE PROCEDURE ctg_sysmgr."DROPAUTOINCREMENT"() AS
- _database_name VARCHAR(1024) DEFAULT '';
- _table_name VARCHAR(1024) DEFAULT '';
- _column_name VARCHAR(1024) DEFAULT '';
- _column_type VARCHAR(1024) DEFAULT '';
- --_end int DEFAULT 0;
- sql VARCHAR(500);
- /* _cursor CURSOR FOR SELECT table_schema, table_name, column_name, column_type FROM "information_schema"."COLUMNS" WHERE EXTRA = 'auto_increment'
- AND table_schema IN ('ctg_sysmgr', 'ecs', 'monitor');*/
- _cursor cursor for select b.owner, b.table_name, a.name COL_NAME, a.type$
- from SYS.SYSCOLUMNS a, dba_tables b, sys.sysobjects c
- where a.INFO2=1 --自增列
- and a.id =c.id
- and c.name = b.table_name; --and b.owner in ('ctg_sysmgr', 'ecs', 'monitor');
- BEGIN
- OPEN _cursor;
- LOOP
- FETCH _cursor INTO _database_name, _table_name, _column_name, _column_type;
- --WHILE _end = 0
-
- exit when _cursor%NOTFOUND;
- /* mysql删除自增列 SET sql = CONCAT("ALTER TABLE "", _database_name, ""."", _table_name , "" MODIFY COLUMN "", _column_name, "" ", _column_type); SET stmt = sql;
- EXECUTE stmt; NULL;*/
- --达梦删除自增定义
- sql = concat('alter table ',_database_name,'.',_table_name,' drop auto_increment;');
- execute immediate sql;
- --print sql;
-
- END LOOP;
- CLOSE _cursor;
- /*EXCEPTION
- WHEN NO_DATA_FOUND THEN set _end = 1;*/ --退出游标使用 exit when _cursor%NOTFOUND;
- END;
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。