Sql server 使用当前目标连接的动态SQL语句返回值

Sql server 使用当前目标连接的动态SQL语句返回值,sql-server,pervasive,pervasive-sql,Sql Server,Pervasive,Pervasive Sql,我目前正在创建我的第一个现实生活项目。任务是将包含订单(如在商店和产品中)的特定XML结构映射到我自己创建的3个表。这些表位于MS SQL Server实例中 所有表都有一个名为id的唯一键,这是一个自动递增的列。我已从所有映射中删除了此列,以便“普及”不会试图填充它本身 对于某些计算,对于其中一个表中的拆分键以及对其他表中创建的记录的引用,我需要数据库刚刚创建的id。为此,我用谷歌搜索了答案。我可以使用select@@identity;这将返回最近为当前连接创建的id。这意味着在普适环境中,我

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

所有表都有一个名为id的唯一键,这是一个自动递增的列。我已从所有映射中删除了此列,以便“普及”不会试图填充它本身

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

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


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

不确定在普适环境中如何工作,但您可能会遇到有关@identity的问题,。Scope_标识可能会更安全,但在普适环境中可能仍然不起作用


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

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

通常,我们的表没有手动填充的键,我们将其留给RDBMS。不过,关于scope_标识的建议是有效的,我看了一下。我们不会有在触发器中插入行的冲突作用域。因此,这两个语句应该提供相同的ID。