首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@GeneratedValue(strategy="IDENTITY") vs. @GeneratedValue(strategy="SEQUENCE")

@GeneratedValue(strategy="IDENTITY") vs. @GeneratedValue(strategy="SEQUENCE")
EN

Stack Overflow用户
提问于 2012-01-21 17:34:03
回答 1查看 51.5K关注 0票数 44

我刚开始冬眠。我不明白以下两种主要的产生策略:

  1. 身份
  2. 序列

请有人解释一下这两种方法是如何工作的,两者有什么区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-21 17:37:45

引用Java持久性/标识和排序

IDENTITY 排序使用数据库中的特殊标识列来允许数据库在插入对象行时自动为其分配id。许多数据库都支持标识列,如MySQL、DB2、Server、Sybase和Postgres。Oracle不支持标识列,但可以通过使用序列对象和触发器来模拟它们。

简单地说:您最多可以将表中的一个ID列标记为标识。数据库引擎将自动为您提供下一个可用值。

和:

序列对象使用专用数据库对象生成ids。只有在某些数据库中才支持序列对象,例如Oracle、DB2和Postgres。通常,序列对象具有名称、增量和其他数据库对象设置。每次选择<sequence>.NEXTVAL时,递增的顺序都是递增的。

序列更灵活,稍微复杂一些。您可以在数据库中的表、触发器等旁边定义一个额外的对象,称为序列。序列基本上被命名为计数器,您可以在查询中的任何地方使用。

票数 70
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8955074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档