数据库自增长设置(数据库字段自增长)

1. 数据库字段自增长

题主可以参考下列access SQL语句,为T1表添加一个一名为id的自增id字段:

alter table t1 add column id counter;

注意,如果该表己经存在同名字段或已存在有自增id类型字段,执行该语句将会报错。

2. 数据库中的自动增长

关于数据库中的自动增长特性的字段,在流行的DBMS中主要有大概三种类型:

它们的共同特点是多数情况下不需要程序员或者DBA手动维护,多作为表的主键使用。

1 纯粹的自动标识列,以典型的ms sqlserver 系统为代表。它的特性是之增加,不减少。

2 半自动可维护自动标识列,以mysql 系统为代表。此类标识符不但可以自动增长也可以用户自己插入。

3 可按照升序和降序规则特性的序列列标识符,以oracle 系统为代表,此类序列可以按照设计自动增加(升序)或者自动减少(降序)而且还可以从头开始。

实际应用中ms sqlserver的最为简单易用,mysql 和 oracle的自动标识和序列比较灵活,当然也稍微复杂一些。

3. 数据库增长方式按自动增长怎么做

系统管理的空间(SMS)和数据库管理的空间(DMS)是DB2数据库中,两种类型的基本表空间。本文将为您介绍调整表空间大小的方法,供您参考,希望对您有所帮助。

与SMS表空间相关联的容器是文件系统目录,而这些目录中的文件会随着表空间中对象的增长而增长。文件会增加至达到其中一个容器上的文件系统限制或达到数据库的表空间大小限制。

DMS表空间由文件容器或原始设备容器组成,它们的大小是在将容器指定给表空间时设置的。当容器中的所有空间都已被使用时,则认为表空间已满。但是,与SMS不同,您可以使用ALTERTABLESPACE语句来添加或扩展容器,从而允许将更多的存储器空间提供给表空间。DMS表空间还具有称为“自动调整大小”的功能。当可以自动调整大小的DMS表空间中的空间被消耗时,DB2数据库系统可能回扩展一个或多个文件容器。SMS表空间具有类似于自动增长的功能但术语“自动调整大小”专门用于DMS。

启用和禁用自动调整大小(AUTORESIZE)

缺省情况下,不会对DMS表空间启用自动调整大小功能。下列语句创建不启用自动调整大小功能的DMS表空间:

CREATETABLESPACEDMS1MANAGEDBYDATABASE

USING(FILE’/db2files/DMS1’10M)要启用自动调整大小功能,将AUTORESIZEYES子句指定为CREATETABLESPACE语句的一部分:

CREATETABLESPACEDMS1MANAGEDBYDATABASE

USING(FILE’/db2files/DMS1’10M)AUTORESIZEYES在已创建DMS表空间之后,还可以通过在ALTERTABLESPACE语句上使用AUTORESIZE子句来启用或禁用自动调整大小功能:

ALTERTABLESPACEDMS1AUTORESIZEYES

ALTERTABLESPACEDMS1AUTORESIZENO有两个其他属性(MAXSIZE和INCREASESIZE)与自动调整大小的表空间相关联。

4. 数据库自增长语句

为了测试,表中仅添加了两列,分别是主键id 和 name列,两列都为varchar类型。

备注:id内容格式为 BHXXXX,如:BH0001

因为主键id不是int类型,想实现自动自增功能,使用内置的方法肯定是行不通的,所以,使用了复杂的查询方法及拼接方式,此方法虽然比较笨,但测试还是可以通过的。

大致思路:在MySql中新建表时,可以创建触发器为id进行自增。

详细思路:

 1、使用查询语句查出表中最后一条数据的id,语句:select id from user order by id desc limit 1     得到结果 BH0001

 2、使用substring函数截取最后一条BHXXXX中数字部分:

        SELECT substring(id,3,4) from user where id=(select id from user order by id desc limit 1)   得到结果 0001

     其中,3表示从第3位进行截取,4表示截取长度

 3、使用concat语句进行字符串连接

          concat('BH',(SELECT substring(id,3,4) from user where id=(select id from user order by id desc limit 1) +1));

        我刚开始认为到这一步的时候,只要给以上结果 +1 ,然后使用concat语句连接字符串就可以了,但是,得到的结果并不是我想象中的 BH0002,而是BH2,所以,在进行字符串连接之前,得将数字2进行填充,使用LPAD函数,最终结果如下:

         concat('BH',lpad(((SELECT substring(id,3,4) from user where id=(select id from user order by id desc limit 1))+1),4,0));

         其中,4表示填充长度,0表示填充内容。

触发器完整语句:

CREATE TRIGGER `T` BEFORE INSERT ON `user`

FOR EACH ROW begin\nset new.id=concat('SH',lpad(((SELECT substring(id,3,4) from user where id=(select id from user order by id desc limit 1))+1),4,0));

end;

其中,大写T为触发器名称,user为表名,结束!

5. 数据库字段自增长设置

能,但是自动增长的主键会有一定的限制,如果是数据太大导致到达最大了,会出现溢出的

6. 数据库字段自增长大于等于1 什么意思

1、打开数据库客户端,点击连接上你的数据库。

2、在对应的库上,点击展开表视图。

3、右键点击要设置的表,点击‘表设计’。

4、打开表设计页面,点击选中主键字段。

5、点击后,在下方就会出现这个字段的设置,点击勾选上‘Auto Increment’就行了,这个就是自增长的属性。

6、然后就完成了、

7. sql字段自增长

标识列在表中具有唯一性,每个该列的值都要求唯一确定一行,如果复制的时候把它也复制过去,可能会导致两行共用一个标识列的值,比如一个表A中有一行的标识列值为2,另一张表B也有一行的标识列值为2,那么如果把A中的那一行复制到B中,标识列的值就不能再设置为2,否则就和B原来的那一行重复了

如何复制标识列

(一) 把标识列的属性改为: 标识 是(不用于复制)

(二) 在发布方和订阅方设置标识的范围

1 队列更新支持自动标识范围

2 双向事务复制要求手动设置标识的范围

(1)用DBCC CHECKIDENT RESEED在发布方和订阅方设置标识的范围

用法

DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value)

当前值设置为 new_reseed_value,如果自创建表后没有将行插入该表,

则在执行 DBCC CHECKIDENT 后插入的第一行将使用 new_reseed_value 作为标识.

否则,下一个插入的行将使用 new_reseed_value + 1.

如果 new_reseed_value 的值小于标识列中的最大值,以后引用该表时将产生 2627 号错误信息。

比如设定id要从1000开始: DBCC CHECKIDENT ('table_name', RESEED, 1000)

(2)你必须用手动方式在订阅服务器设置标识和不用于复制属性

8. 数据库自增长什么意思

Oracle 新建自增序列号和触发器:

CREATE SEQUENCE SEQ_TB_DataApproval

INCREMENT BY 1 — 每次加几个

START WITH 1 — 从1开始计数

NOMAXVALUE — 不设置最大值

NOCYCLE — 一直累加,不循环

NOCACHE — 不建缓冲区

create or replace trigger TRIGGER_TB_DataApproval

before insert on TB_DataApproval

for each row

declare

— local variable here

begin

— Column “ID” uses sequence di_test_id

select SEQ_TB_DataApproval.nextval into :new.ID from dual;

end TRIGGER_TB_DataApproval;

9. mysql字段自增长

我举个小例子给你简单解释一下。

例:

CREATETABLETABLE_1

(

IDINTUNSIGNEDNOTNULLPRIMARYKEYAUTO_INCREMENT,

//ID列为无符号整型,该列值不可以为空,并不可以重复,而且自增。

NAMEVARCHAR(5)NOTNULL

)

AUTO_INCREMENT=100;(ID列从100开始自增)

PRIMAPY是主键的意思,表示定义的该列值在表中是唯一的意思,不可以有重复。

UNSIGNED是无符号的意思,代表该字段没有正负。

AUTO_INCREMENT可以理解为自动递增的意思,每增加一条记录,值会自动加1。(例如在上面的例子中,ID列每增加一条记录,便会从100自增)。

我想通过上面的例子,你应该可以理解一些了,不明白再问我。谢谢。

10. 数据库的增

按如下方法操作:

1、先正常创建带有主键的表。

create table user( id integer primary key,

firstname varchar(200) not null,

lastname varchar(200) not null,

age integer);

2、设置自增字段。

alter table user modify id integer auto_increment ;

3、将auto_increment_increment设置成10。

set auto_increment_increment=10

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注