删除了以后,该编号就断了!!!!
建议你尝试这个思路,类似于FoxBase的做法:
增加一个删除否的字段,当进行删除操作的时候,不是真正的删除,而是在这个字段里做上一个标记,做过删除标记的记录,查询时都隐藏掉。
然后,当新增加记录时,使用删除记录中最小的自动编号的记录,进行相应字段的修编辑修改,然后恢复它的删除标记为未删除。
仅供参考。
-- 表结构
1> CREATE TABLE test_create_tab2 (
2> id INT IDENTITY(1, 1) PRIMARY KEY,
3> val VARCHAR(10)
4> );
5> go
-- 插入数据的代码略
-- 当前数据
1> SELECT * FROM test_create_tab2;
2> go
id val
----------- ----------
1 NO id
2 A
3 B
4 C
5 D
(5 行受影响)
-- 删除一个数据,造成数据不连续.
1> DELETE FROM test_create_tab2 WHERE id = 3;
2> go
(1 行受影响)
-- 允许将显式值插入表的标识列中
1> SET IDENTITY_INSERT test_create_tab2 ON
2> go
1> INSERT INTO test_create_tab2(id, val) VALUES (3, 'id is use');
2> go
(1 行受影响)
--不允许将显式值插入表的标识列中
1> SET IDENTITY_INSERT test_create_tab2 OFF
2> go
1> SELECT * FROM test_create_tab2;
2> go
id val
----------- ----------
1 NO id
2 A
3 id is use
4 C
5 D
(5 行受影响)
不断号 是不可能的,如果你这里是主键的话,就会数据,如果 lz想实现 在页面中显示序号,可以采用其他方法。
自增列删除数据时一定会产生断码,不过倒是可以通过强制插入用新数据连带断码一起补上