首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在使用Doctrin2注解@GeneratedValue时出现问题(strategy=“AUTO”)

在使用Doctrin2注解@GeneratedValue时出现问题(strategy=“AUTO”)
EN

Stack Overflow用户
提问于 2011-05-25 13:18:31
回答 1查看 885关注 0票数 3

希望有人能帮我解决这个问题。我有以下教义注释:

代码语言:javascript
运行
复制
/**
 * @var integer 
 *
 * @Column(name="code", type="integer", length=4)
 * @Id
 * @GeneratedValue(strategy= "AUTO")
 */
private $code;

其中code是我的表主键。我想要的是每次在表中插入一行时正确地(自动)设置代码值。

我正在使用Doctrin2和PostgreSQL,问题是:为了提前准备数据库,我直接在PgAdmin中使用SQL命令将行插入到表中。然后我尝试插入新行,但这一次是通过我的程序,每次我尝试插入此行时,都会得到一个主键冲突,直到我尝试了与以前使用SQL命令插入的行一样多的次数。

例如,如果我使用SQL命令插入了3行,我将不得不使用程序尝试3次,到第4次时,行将被正确地插入。

有没有办法将初始主键的值设置为4(当然,这个值取决于在运行程序之前已经使用SQL命令插入的行数)以避免主键冲突?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2011-10-19 16:20:39

我认为您在表中手动插入了值,并自行分配了代码值:

insert into table (code, ... ) values (1, ...)

在这种情况下,您的序列值不会递增。因此,当Doctrine尝试向数据库插入新行时,它将使用序列号进行自动编号。串行状态仍为值1,这会导致主键冲突。尽管查询失败,但序列号会递增1,因此下一次它将尝试使用值2。这就解释了为什么在三次尝试之后,你不再得到一个主键冲突。

希望这个解释能有所帮助。

祝好运!

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

https://stackoverflow.com/questions/6119851

复制
相关文章

相似问题

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