自动增量问题mysql

时间:2010-10-31 18:21:29

标签: mysql auto-increment

我已经找到了这个,但到目前为止没有运气。我在mysql中有两个表,它们被配置为父子。父表具有auto_increment类型的字段,并且子项具有引用父项中的autoincrement列的字段。当我插入父表时,一切都很顺利。但是,当我在子表上插入它时,它给出了一个异常,表明父表中没有引用列值。问题是,如何在INSERT之后刷新自动增量id的值,以便子项在执行UPDATE之前引用该值(或在此情况下插入)。

3 个答案:

答案 0 :(得分:1)

插入新记录时,

始终先插入父级。获取auto_increment值(在mysql中使用LAST_INSERT_ID()),并在子表中使用它。在一开始你就可以开始一个交易,所以如果在插入孩子时出现问题,你可以回滚。

答案 1 :(得分:0)

您的问题有点不清楚,但我假设您对子表中引用父表中的auto_increment字段的列有外键约束,对吗?

在这种情况下,您需要在子表的FK列中为子表上的每个更新或插入设置一个有效值。如果你这样做,你仍然会收到错误吗?

  

问题是,如何刷新   自动增量id后的值   INSERT所以孩子有一个   在执行它之前参考   更新(或在这种情况下插入)。

这对我没有意义。 刷新autoincrement id 的值是什么意思?

通常,在插入父表后,检索生成的auto_increment值(如何执行此操作取决于您使用的API,但所有数据库API都可以执行此操作),将此值设置为子表中的相应列,然后插入/更新子表。

答案 2 :(得分:0)

听起来您希望在将新记录插入子表的同时向父表插入新记录。尝试使用存储过程吗?这样,您可以插入父表,将标识符存储在变量中,然后将该变量保存到子表中新记录的外键字段中。