日期:2014-05-19  浏览次数:20509 次

自动增量满了之后数据库会怎么样?
譬如一个ID字段,设置了int类型,并自动增量。
        往表里写数据,总有一天这个ID会溢出。int为4字节的话,最大的ID值就是268435455。之后再写入记录,会怎么样?ID变成1,还是写不进去了?

------解决方案--------------------
应该是20亿吧.不是2亿多.一个表要是到了20亿条记录我想应该早就爆了.所以根本等不到溢出
------解决方案--------------------
这个可以写一个循环去跑看看

不过我估计这个循环可能要运行几个月才有结果了,还要跟机器性能有关,如果是64位的系统说不定要跑几年
------解决方案--------------------
integer 或 int
长度为 4 个字节,存储从 -2.147.483.648 到 2.147.483.647 的数字。

--正常
create table temp1(id int identity(268435455,1),nn varchar(10))
insert into temp1 select 'a ' from sysobjects as a ,sysobjects as b

create table temp2(id int identity(2147483647,1), nn varchar(10)) --正常
insert into temp2 select 'a ' --以下为错误提示

服务器: 消息 8115,级别 16,状态 1,行 1
将 IDENTITY 转换为数据类型 int 时发生算术溢出错误。
发生算术溢出。

------解决方案--------------------
刚才我一个同事说以前无聊的时候跑过

跑到最后报了一个错误是: 
Arithmetic overflow error converting IDENTITY to data type int.
------解决方案--------------------
怎么又是这个问题?今天看到2个了,回答过了呀。
to hb_gx(高升),
何必从1开始跑?循环跑不是要跑很久,其实你把初值设置大点(就像zhenmeiyisi(。。。) 的那样),再跑不就ok了,呵呵

------解决方案--------------------
真到溢出那么一天,我想你早该考虑迁移数据
------解决方案--------------------
这样都真有溢出的那一天,你应该考虑是否你对数据的管理有是否问题。
------解决方案--------------------
樓主,你試試在1000萬的記錄裡做查詢,新增,修改,刪除操作後就知道是技術問題還是數據庫設計問題了
------解决方案--------------------
你可以试试,先把标识的起始值设为最大值 ,然后再设增量,增加记录试试,我记着是又从1开始的。
------解决方案--------------------
刚才说错了,我tinyint类型作标识,起始值255,然后增量为1,再添加多条记录时,发生算术错误。