看你的表的列id是否是"auto_increment":
10年积累的成都做网站、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有甘谷免费网站建设让你可以放心的选择与我们合作。
show
create
table
表名;
若列id不是auto_increment的话,那肯定不能自增长了,修改其属性为"auto_increment"即可
alter
table
【表名】
modify
[name
varchar(22)];你可以讲name变为id
int(5)
NOT
NULL
auto_increment
PRIMARY
KEY
,试试
:id
int
identity(1,1)
解释:
identity是自动增长参数。
alter
table
questionlib
modify
id
int(11)
auto_increment;
这样应该可以的,修改后从下一条记录开始自动增长。
如果想让原来的自动增长就得复制现有表的结构(无id),添加id并加上auto_increment,然后通过循环,添加n条空记录,然后对应先前表的id,依次插入数据。
如果跟其他表有关联就比较麻烦了
这样可以么?
思路:
1、首先搞清楚所有表的主外键关系
2、取消全部表的主键自增标识列,方便你后续的直接修改ID
例如:
exec sp_configure 'allow updates',1
reconfigure with override
GO
----取消标识列标记
update syscolumns set colstat = 0 where id = object_id('表名') and colstat = 1
GO
----恢复标识列标记
update syscolumns set colstat = 1 where id = object_id('表名') and name = '标识列名称'
3、写个SQL脚本,修改ID,在修改的时候,一并更新全部表里的此ID值
例如:
declare @old_id as int,@new_id as int
select @old_id=12,@new_id=123
update 表名1 set id=@new_id where id=@old_id
update 表名2 set id=@new_id where id=@old_id
update 表名3 set id=@new_id where id=@old_id
.....
update 表名n set id=@new_id where id=@old_id
use
[你的数据库]
go
create
trigger
name
on
[table]
after
delete
as
begin
--定义游标,使你逐个往下找个ID,并执行update修改
declare
@flag
int
select
@flag=ID
from
deleted
declare
[cursorname]
cursor
for
select
ID
from
[table]
where
ID@flag
open
[cursorname]
fetch
next
from
[cursorname]
update
[table]
set
ID=ID+1
where
ID=fetch
next
from
[cursorname]
WHILE
@@FETCH_STATUS
=
begin
update
[table]
set
ID=ID+1
where
ID=fetch
next
from
[cursorname]
close
[cursorname]
DEALLOCATE
authors_cursor
end
end
日常开发中经常遇到AUTO_INCREMENT类型自增ID值不符合预期的情况,本经验为大家总结如何修改自增ID的初始值。
方法/步骤
创建表时设置递增ID:
create table users (pkid int auto_increment primary key,...)
2
表创建完成后设置递增ID:
alter table users add pkid int auto_increment primary key
注意:自增字段,一定要设置为primary key.
3
很多时候不希望pkId从1开始,我们可能希望他从10000开始:
alter table users AUTO_INCREMENT=10000;
4
你也可以修改现有的递增值, 比如大批量删除数据后,想id从654321退回123456开始:
alter table users AUTO_INCREMENT=123456;
1问:你有id=8的数据吗?答:没有!那你为什么where后面找id=8的?
2问:你想修改的是什么?答:id,那你修改数据名字干什么呢?改ID啊!
3问:你的ID是自增可修改吗?答:是!那就修改,不是!那就把数据库的ID列设置为可修改!
wl:武力,zl:智力,ts:统帅,zz是什么?