弃用数据库自增ID,曝光一下我自己用到的解决方法
在平时的项目开发中,我相信有很大一批人都在用这个数据库自增ID,用数据库自增ID有利也有弊。
优点:节省时间,根本不用考虑怎么来标识唯一记录,写程序也简单了,数据库帮我们维护着这一批ID号。
缺点:for example,
在做分布式数据库时,要求数据同步时,这种自增ID就会出现严重的问题,因为你无法用该ID来唯一标识记录。同时在数据库做移植时,也会出现各种问题,总
之,对此自增ID有依赖的情况,都有可能出现问题。我绝对相信园子里有很一部分人都被这个“好用的东西” 曾经害惨过!
?
我平时在开发项目的时候,一般都没有用到数据库的自增ID, 所以我想分享一下自己的解决方法。
解决思路:
?
1:定义一张表,专门用来存放存所有需要唯一ID的表名称以及该表当前所使用到的ID值。
2:?写一个存储过程,专门用来在上一步的表中取ID值。
这个思路非常简单,我不作解释了,直接来看看我的实现方法:
?
第一步:创建表
create
?
table
?table_key
(
???????table_name???
varchar
(
50
)?
not
?
null
?
primary
?
key
,
???????key_value????
int
?????????
not
?
null
)
第二步:创建存储过程来取自增ID
create
?
procedure
?up_get_table_key
(
???
@table_name
?????
varchar
(
50
),
???
@key_value
??????
int
?output
)
as
begin
?????
begin
?
tran
?????????
declare
?
@key
??
int
?????????
?????????
--
initialize?the?key?with?1
?????????
set
?
@key
=
1
?????????
--
whether?the?specified?table?is?exist
?????????
if
?
not
?
exists
(
select
?table_name?
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。