文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何屏蔽数据库中自增ID功能

2024-04-02 19:55

关注

今天就跟大家聊聊有关如何屏蔽数据库中自增ID功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

  在平时的项目开发中,我相信有很大一批人都在用这个数据库自增ID,用数据库自增ID有利也有弊。平时在开发项目的时候,一般都没有用到数据库的自增ID。下面亿速云小编来讲解下如何屏蔽数据库中自增ID功能?

  如何屏蔽数据库中自增ID功能

  解决思路

  1:定义一张表,专门用来存放存所有需要唯一ID的表名称以及该表当前所使用到的ID值。

  2:写一个存储过程,专门用来在上一步的表中取ID值。

  这个思路非常简单,我不作解释了,直接来看看我的实现方法:

  第一步:创建表

  createtabletable_key(table_namevarchar(50)notnullprimarykey,key_valueintnotnull)

  第二步:创建存储过程来取自增ID

  createprocedureup_get_table_key(@table_namevarchar(50),@key_valueintoutput)asbeginbegintrandeclare@keyint--initializethekeywith2set@key=1--whetherthespecifiedtableisexistifnotexists(selecttable_namefromtable_keywheretable_name=@table_name)begininsertintotable_keyvalues(@table_name,@key)--defaultkeyvlaue:1end--stepincreaseelsebeginselect@key=key_valuefromtable_keywith(nolock)wheretable_name=@table_nameset@key=@key+1--updatethekeyvaluebytablenameupdatetable_keysetkey_value=@keywheretable_name=@table_nameend--setouputvalueset@key_value=@key--committrancommittranif@@error>0rollbacktranend

  对于在表中不存在记录,直接返回一个默认值为1的键值,同时插入该条记录到table_key表中。而对于已存在的记录,key值直接在原来的key基础上加1.

  如何屏蔽数据库中自增ID功能

  总结一下,这种方法非常简单,我说一下它的优缺点。

  优点:

  1:ID值是可控的。用户可以从指定段开始分配ID值,这对于在分布式数据要求同数据同步时,非常方便,很好地解决了ID重复的问题。

  2:在编写程序中,ID值是可见的,比如在再插入关联的记录时,相比使用数据库自增ID的情况下,这种方法不需要在插入一条数据库记录之后,再去得到自增ID值,然再再使用该ID的值来插入关联的记录。我们可以一次性使用事务来插入关联记录。

  3:对于需要批量插入数据时,我们可以改写一下上面的存储过程,返回一个段的开始ID,然后更新表时需要注意,不是原来的简单的递增1,而是递增你想要的插入多少条记录的总数。

  缺点:

  1:效率问题,每次取ID值都需要调用存储过程从数据库中检索一次。对于这种情况,我觉得效率不是很大问题,因为SQLserver会对我们经常调用的存储过程有缓存,再一点,这个表的数据应该不会很大,最多上千条(一个项目中上千个表的情况应该不是很多吧)。所以检索不是什么问题,何况是根据表名来检索(表名列已是主键)。

看完上述内容,你们对如何屏蔽数据库中自增ID功能有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯