看你的表的列id是否是"auto_increment": show create table 表名; 若列id不是auto_increment的話,那肯定不能自增長(zhǎng)了,修改其屬性為"auto_increment"即可
成都創(chuàng)新互聯(lián)主要從事網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)越城,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
alter table 【表名】 modify [name varchar(22)];你可以講name變?yōu)閕d int(5) NOT NULL auto_increment PRIMARY KEY ,試試
:id int identity(1,1) 解釋: identity是自動(dòng)增長(zhǎng)參數(shù)。
1問:你有id=8的數(shù)據(jù)嗎?答:沒有!那你為什么where后面找id=8的?
2問:你想修改的是什么?答:id,那你修改數(shù)據(jù)名字干什么呢?改ID??!
3問:你的ID是自增可修改嗎?答:是!那就修改,不是!那就把數(shù)據(jù)庫(kù)的ID列設(shè)置為可修改!
wl:武力,zl:智力,ts:統(tǒng)帥,zz是什么?
use
[你的數(shù)據(jù)庫(kù)]
go
create
trigger
name
on
[table]
after
delete
as
begin
--定義游標(biāo),使你逐個(gè)往下找個(gè)ID,并執(zhí)行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
思路:
1、首先搞清楚所有表的主外鍵關(guān)系
2、取消全部表的主鍵自增標(biāo)識(shí)列,方便你后續(xù)的直接修改ID
例如:
exec?sp_configure?'allow?updates',1
reconfigure?with?override
GO
----取消標(biāo)識(shí)列標(biāo)記
update?syscolumns?set?colstat?=?0?where?id?=?object_id('表名')?and?colstat?=?1
GO
----恢復(fù)標(biāo)識(shí)列標(biāo)記
update?syscolumns?set?colstat?=?1?where?id?=?object_id('表名')?and?name?=?'標(biāo)識(shí)列名稱'
3、寫個(gè)SQL腳本,修改ID,在修改的時(shí)候,一并更新全部表里的此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
創(chuàng)建表時(shí)設(shè)置遞增ID:
create table users (pkid int auto_increment primary key,...)
表創(chuàng)建完成后設(shè)置遞增ID:
alter table users add pkid int auto_increment primary key
注意:自增字段,一定要設(shè)置為primary key.
很多時(shí)候不希望pkId從1開始,我們可能希望他從10000開始:
alter table users AUTO_INCREMENT=10000;
4
你也可以修改現(xiàn)有的遞增值, 比如大批量刪除數(shù)據(jù)后,想id從654321退回123456開始:
alter table users AUTO_INCREMENT=123456;