【问题标题】:Autoincrement problem mysql自增问题mysql
【发布时间】:2011-05-03 03:23:36
【问题描述】:

我一直在寻找这个,但到目前为止还没有运气。我在 mysql 中有两个表,它们被配置为父子表。父表有一个 auto_increment 类型的字段,子表有一个引用父表中自动增量列的字段。当我插入父表时,一切正常。但是当我在子表上插入时,它给了我一个异常,说父表中没有引用列值。问题是,如何在 INSERT 之后刷新自动增量 id 的值,以便孩子在执行其 UPDATE(或在这种情况下为插入)之前引用该值。

【问题讨论】:

  • 我删除了 c# 标签,因为这与 c# 无关。
  • @Albin Sunnabo:我认为解决这个问题将涉及一些 C# 代码,因此 C# 标签可能是相关的。然而,如果没有更多信息,这个问题很难回答。特别是,我想看看用于执行更新/插入的 C# 代码和确切的错误消息。

标签: mysql auto-increment


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    在插入新记录时,总是先插入父记录。获取 auto_increment 值(在 mysql 中使用 LAST_INSERT_ID()),并在子表中使用它。一开始你可以开始一个事务,所以如果插入到孩子时出现问题,你可以回滚。

    【讨论】:

      【解决方案3】:

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

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

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

      这对我来说没有意义。 刷新自增id的值是什么意思

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多