2010-10-31 145 views
0

我已经找过这个,但目前为止没有运气。我在mysql中有两个表,它们被配置为父子。父表具有auto_increment类型的字段,并且该子级具有引用父级中的autoincrement列的字段。当我插入父表时,一切都很好。但是,当我插入子表时,它给了我一个例外,说父表中没有引用列值。问题是,如何在刷新后自动增量ID的值,以便在执行其UPDATE(或在此情况下插入)之前,子对象具有引用。自动增量问题mysql

+0

我删除了c#标签,因为这与c#无关。 – 2010-10-31 18:26:30

+0

@Albin Sunnabo:我认为这个解决方案会涉及一些C#代码,所以C#标记可能是相关的。但是,如果没有更多的信息,这个问题很难回答。特别是,我希望看到用于执行更新/插入和精确错误消息的C#代码。 – 2010-10-31 18:29:53

回答

1

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

0

你的问题有点不清楚,但我假设你在引用父表中的auto_increment字段的子表中有一个列的外键约束是正确的?

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

的问题是,我怎么刷新自动增量ID的 值之后 插入这样的孩子有 参考之前执行其 UPDATE(或插入在这种情况下)。

这对我没有意义。你是什​​么意思刷新自动增量的值

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

0

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