我的数据库中设了字段:num int identity(1,1) not null
插入数据后num自动增加, 但是在删除数据的时候num被一起删除了,
我要找出num中那些被删除了, 然后再再原处补进数据;
举个例子:
比如说我开始删除的是第五条数据,那么我在插入数据的时候一定要到num=5,但是num=5这条数据时全部删除的,(另外数据表的条数比较庞大), 谁能帮我看看,非常感谢!
SET IDENTITY_INSERT [数据库名.[架构名].]表名 ON
--插入数据
SET IDENTITY_INSERT [数据库名.[架构名].]表名 OFF
SET IDENTITY_INSERT [数据库名.[架构名].]表名 ON|OFF
表示设置允许将显式值插入表的标识列中,设置后你就可以手动Insert或者Update表中主键的值了
如果你使用数据库自带的identity做为主键(如你的num),就无法保证主键的连续性,如num=5的记录被删除,那么num就会为1 2 3 4 6 7……,这中情况无法避免。
如果想避免,就自己写程序生成主键,比如,在一个表中记录删除了哪些num的值,下次插入的时候先用这个表中的值作为主键,如果表中没有数据,就找出最大的num值,在此基础上+1作为主键的值。
但这样做有必要吗?不仅效率低下,而且没有任何意义啊。主键就是主键,不应该在你的数据表里有任何业务上的意义,因此不连续是无所谓的。如果你的num字段不是主键,那你设置成identity就有问题了。
设一个flagdeleted字段不就行了,删除了,flagdeleted=1,想改过来flagdeleted=0,不就行了,原来的num不受影响的