取出上一篇
select * from 表明 where uuid>你当前内容的id order by uuid asc limit 0,1
取出下一篇
你们的想法是不是,想在建表时为id指定uuid,然后每次插入数据都会自动为每一条数据生成uuid呢?就像auto_increment主键自增一样呢?
我只想说 you are too young!
我一开始是这样做的:
create table product(
id varchar(36) primary key default uuid()
)
sql语句报错。
后来查了查资料,发现mysql好像并不支持在建表时,为某一字段指定默认函数值。但是在Oracle数据库中,却支持这样干,也就可以实现插入数据时,自动生成uuid。
所以在mysql中只能在插入数据时,将uuid()函数值赋值给id字段。
后来,我又想了一个方案,我可以去写一个触发器,每次在执行插入 *** 作时,都为id字段更新为uuid(),但是这种方式还是存在很多问题的,这里就不说了。
最后说明一点(uuid适不适合作为主键):
uuid号称“全球唯一”,实际上业务中一般不会只用一个uuid就保证某个字段的唯一性,因为它并不能保证唯一性,uuid的组成:
Mac地址+时间戳+自增序列,前两个都可以修改,自增序列在不同机器本身就无法保证唯一。既然无法保证唯一,那么没有任何处理的情况下直接将uuid作为主键,显然也是不合适的。
通过 *** 作数据库语句,然后判断返回值,如果为fasle,就执行CREATE TABLE IF NOT EXISTS `db_database_user` (SQL),这样就实现了你的要求,希望对你有用。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)