你看看你哪个表示不在,可以重新插入一条记录,表示是刚才你删除的表示。 必须这样插入 SET IDENTITY_INSERT test ON insert into test(id,name,groups) values(3,'ok','8')
你看看你哪个标识不在,可以重新插入一条记录,表示是刚才你删除的表示。 必须这样插入 SET IDENTITY_INSERT test ON insert into test(id,name,groups) values(3,'ok','8') 这个3是我刚删除的标识。
--identity属性可以修改 create table message (id int identity(1,1) constraint pk_id primary key , name nvarchar(20)) go insert message select 'aaa' union all select 'bbb' union all select 'ccc' union all select 'ddd' go delete message where id = 3 go set identity_insert message on --先把它设为ON就可以插入数据了 insert message (id,name) values (3,'重新插入') set identity_insert message off --然后关一下 go select * from message /*结果 1 aaa 2 bbb 3 重新插入 4 ddd */
删除主键是可以的,但是要先删除主键约束,现在有一个问题就是我删除主键之后,再建ID为主键的时候,主键约束的名字却不一样啊,我参考了一段SQL语句,但还是没有实现出来,大家帮忙下 declare @PK varchar(100) create table a (bb varchar(10) not null,cc money)alter table a add primary key (bb)select @pk=name from sysobjects where xtype='PK' and parent_obj=object_id('message') ' exec ('alter table message drop CONSTRAINT '+@pk)
必须这样插入
SET IDENTITY_INSERT test ON
insert into test(id,name,groups)
values(3,'ok','8')
必须这样插入
SET IDENTITY_INSERT test ON
insert into test(id,name,groups)
values(3,'ok','8')
这个3是我刚删除的标识。
create table message
(id int identity(1,1) constraint pk_id primary key ,
name nvarchar(20))
go
insert message
select 'aaa' union all
select 'bbb' union all
select 'ccc' union all
select 'ddd'
go
delete message
where id = 3
go
set identity_insert message on --先把它设为ON就可以插入数据了
insert message (id,name)
values (3,'重新插入')
set identity_insert message off --然后关一下
go
select * from message
/*结果
1 aaa
2 bbb
3 重新插入
4 ddd
*/
例如我的列(也就是主键)id 记录为1 2 3 4 5 6
当我删除其中一个记录,比如是记录3时,
使id记录为1 2 3 4 5
如果你想把后面的列自动向上移从而得到12345这样的效果,那么就得重制ID列。
如果数据量小,重制问题还不大。如果数据量很大,这样做效率就很差了。
declare @PK varchar(100)
create table a (bb varchar(10) not null,cc money)alter table a add primary key (bb)select @pk=name from sysobjects where xtype='PK' and parent_obj=object_id('message')
' exec ('alter table message drop CONSTRAINT '+@pk)