前阵子,一直在折腾阿里云。写的一些文章也放到自己的wordpress博客上了。但自己前阵子在做系统更换操作的时候未备份磁盘,大部分心血付诸东流。真是一个悲伤的故事。现在决定用.NET搞搞自己的博客。正好把wordpress给抛弃掉。
言归正传,这个唯一号类似自增ID,自增id虽然好用,但进行数据库切换(SQL换Mysql等等)的时候,参与具体业务逻辑的这个东西说不定就是一个定时炸弹。但如果我们自己人为规定一个唯一ID,来代替系统的自增ID呢?有以下的要求,任何情况下产生的ID不重复;跟自增ID类似,逐个增加。
我拿mariadb做的实验。这个跟MySql语法一样。CentOS 7以后只有他了。将就一下吧。
该表一个字段存表名,一个字段存最大ID
首先建表SQL
-- 字段comment 后面没等号。。。
-- default 不加括号
-- 不特殊标明,Status字段意思为 0:正常;1:删除
-- MySql约束,名字在前,列在括号内
create table `Num`(
Id int AUTO_INCREMENT not null
,Name varchar(100) not null comment '表名'
,Num bigint not null default 0 comment '该表对应的编号'
,Status int default 0 not null
,primary key `P_Id`(`Id`)
,unique key `U_Name`(`Name`)
)ENGINE=InnoDB DEFAUL