0

我目前正在 Pervasive 中创建我的第一个现实生活项目。任务是将包含订单(如商店和产品)的特定 XML 结构映射到我自己创建的 3 个表。这些表位于 MS-SQL-Server 实例中。

所有表都有一个名为“id”的唯一键,这是一个自动递增的列。我已经从所有映射中删除了这一列,这样 Pervasive 就不会尝试自己填充它。

对于某些计算,对于其中一个表中的拆分键以及对其他表中创建的记录的引用,我将需要数据库刚刚创建的 id。为此,我用谷歌搜索了答案。我可以使用“选择@@identity;” 作为语句,这将返回最近为当前连接创建的 id。这意味着在 Pervasive 中,我将不得不使用已经存在的目标连接对象来执行此语句。

但是怎么做呢?我很确定我需要一个 JDImport 或 DJExport 对象,但是如何获得一个与 Pervasive 插入记录的当前连接相关联的对象呢?

或者当我需要在其他表中引用 id 时,是否有任何其他方式来处理这种自动增量?

4

2 回答 2

0

如果有人查看这篇文章并想知道答案,那就是“你不能”。Pervasive 不允许访问他们自己的连接对象,即他们用来查询数据库的连接对象。如果无法访问它,您将无法保证获取正确的 id。我们的解决方案是这样的:我们使用了一个在转换前事件中调用的存储过程,该过程创建了标头记录并以表的形式返回了 id 和可选的错误消息。我们执行了它,它返回了我们然后保存并在整个映射中使用的 id。

于 2011-10-12T08:24:26.210 回答
0

不确定 Pervasive 中的工作原理,但您可能会遇到@@identity 的问题。Scope_identity() 可能会更安全,但可能仍然无法在 Pervasive 中工作。

希望您的表除了生成的 id 之外还有一个自然键,在这种情况下,您可以根据自然键选择您的 id。这将避免您在不同的会话和范围方面可能遇到的任何问题。

于 2011-08-16T20:40:29.247 回答