在数据库中自动生成编号的实现方法分享

时间:2024-01-23 03:02:04 

在使用数据库的时候,难免要在使用过程中进行删除的操作,如果是使用int类型的字段,令其自增长,这是个最简单的办法,但是后果会有些不是你想要的!看下这个Demo:

1.建立这样的简单的表Test.

在数据库中自动生成编号的实现方法分享

2.设置字段id的自增.

      在数据库中自动生成编号的实现方法分享

3.表添加数据

insert into Test(name) values('TestName')

insert into Test(name) values('TestName')

insert into Test(name) values('TestName')

4.你会看到

在数据库中自动生成编号的实现方法分享

5.在这里我们删除id为2的行.就只剩下了id为1和id为3的两行数据了.(不上图了)

6.再添加一条数据.

insert into Test(name) values('TestName')

我们会发现这或许不是我们想要的结果了

在数据库中自动生成编号的实现方法分享

为什么没有id为2的呢?之后任你死命的加,也不会有id为2的数据行了!

这样的设计固然方便,但是魔鬼在于细节,这篇博客就是为了解决这个问题让我们重新见到id为2的数据行(这里顺便改进一下,让结果不只是显示id为2这样的int,假如有一天我们的各户要求我们他们要一个5位数的id号吗,从00000开始,OK,这没问题)

1.主角登场,存储过程终于派上了用场了


Create procedure [dbo].[insertName]
(@name nvarchar(50))
as
begin
declare @i int
set @i=1
while(@i<10000)
begin
if exists(select convert(int,id) from numbertest where convert(int,id)=@i)
begin
set @i=@i+1
continue
end
else
begin
insert numbertest values(right('0000'+convert(varchar(5),@i),5),@name)--这里的两个数字'5' 就是我们要设置的id长度
break
end
end
end


2.用SQL 语句调用这个存储过程

execute insertName Test

你可以狂按几次,几十次,几百次,我们要的数据加进去了,

在数据库中自动生成编号的实现方法分享

我们可以删除指定的id数据行,当我们再次进行添加的时候,之前被删掉的id行,将会被我们新添加的数据所覆盖,这样id就都可以连接起来了.

哦,对了,还没有说如何显示的是 '0' 开头的呢?这个简单,将id的数据类型设置为nvarchar(5),就是这么简单!呵呵!
总结:
这里我们调用了存储过程,存储过程不宜多用,但是有的时候还真是用起来很方便,本文章对于刚刚工作的童鞋们应该还是有点帮助的吧,好好学习吧,生活很美好!
如释重负的感觉啊,终于搞定一个问题,在这里感谢帮助我的童鞋们! 下次再会!

标签:自动生成编号
0
投稿

猜你喜欢

  • Python中对数据库的操作详解

    2024-01-19 18:26:54
  • numpy.reshape(-1,1)的具体使用

    2021-12-26 13:25:30
  • python typing模块--类型提示支持

    2023-11-11 16:47:27
  • 深入研究WINDOW.EVENT对象

    2012-04-26 16:31:58
  • python实现八大排序算法(2)

    2023-09-05 06:28:23
  • django实现更改数据库某个字段以及字段段内数据

    2024-01-26 14:52:09
  • JavaScript的目的及历史

    2007-10-17 18:53:00
  • Python ORM数据库框架Sqlalchemy的使用教程详解

    2024-01-13 20:02:53
  • Java生成日期时间存入Mysql数据库的实现方法

    2024-01-13 03:49:08
  • python 动态生成变量名以及动态获取变量的变量名方法

    2021-05-18 10:28:20
  • Python如何一行输入多个数,并存入列表

    2023-09-27 19:14:56
  • 最令人蛋疼的10种用户体验设计师

    2011-08-05 18:51:07
  • python中函数总结之装饰器闭包详解

    2023-06-27 02:55:04
  • ACCESS如何打印窗体中当前显示的记录

    2008-11-20 16:31:00
  • Python如何用filter函数筛选数据

    2022-07-23 21:20:14
  • MySQL字符串索引更合理的创建规则讨论

    2024-01-24 19:10:55
  • python ip正则式

    2022-02-13 22:13:02
  • php中in_array函数用法探究

    2023-06-21 21:03:54
  • python数据可视化之条形图画法

    2021-08-07 13:43:22
  • macOS安装Solr并索引MySQL

    2024-01-17 13:57:08
  • asp之家 网络编程 m.aspxhome.com