uuid和int型的自增在id在写测试时有什么不一样吗?

hlily2005 2008-11-20 01:04:03
最近在学写测试,数据库用sql server 2005, spring框架

过程中发现,测试数据的主键是写不进去的,因为自增的原因,所以把自增标识改成了否,但是这样的测试也是有问题的,数据不能提交到数据库,最后我们老大把主键策略改成了uuid,这样问题就解决了

所以向了解下int型的id和uuid有什么区别吗?
...全文
189 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hlily2005 2008-11-22
  • 打赏
  • 举报
回复
初学,对一切都很模糊,这个暂时就这样吧,散分结贴,多谢各位了!
kissclf 2008-11-21
  • 打赏
  • 举报
回复
UUID是一个32位长的字符
zou_wei_forever 2008-11-21
  • 打赏
  • 举报
回复
uuid是32位的字符串,是随机生成的,估计一万年后才会有重复
Landor2004 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hlily2005 的回复:]
可是在set了id后,测试还是有问题的,原因是因为测试时没有提交到数据库,后来设置了rollback,可以提交到数据库了,不过还是改用了uuid,因为uuid虽然是自增的,但是在数据库的标志里不是自增状态
[/Quote]
楼主似乎对概念不太清楚,可能你们老大还改了别的地方没和你说吧
不管数据库是否设置为自增长的,如果事务没有提交,都不回同步到数据库
这里有个区别,自增长的事务没有提交,自增长也会加1

如果不是自增长的,那么id和uuid是一样的,uuid是随机的,到时候取数据的时候order by的时候会很混乱
zidasine 2008-11-21
  • 打赏
  • 举报
回复
可能你数据库不支持你开始的主键生成策略
wj_18 2008-11-21
  • 打赏
  • 举报
回复
ID字段一般是唯一标示该数据的字段,可以不为自增,但一般都是主键
如你所说如果把自增去掉,数据无法插入,因为原来该字段是自增,无需手动提供。现在你手动提供的数据里肯定没ID字段,导致非空字段为空,数据自然插不进去了

UUID跟INT型数没什么区别,只不过一个是自动生成的
hlily2005 2008-11-21
  • 打赏
  • 举报
回复
可是在set了id后,测试还是有问题的,原因是因为测试时没有提交到数据库,后来设置了rollback,可以提交到数据库了,不过还是改用了uuid,因为uuid虽然是自增的,但是在数据库的标志里不是自增状态

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧