通过多种形式传递自动递增的ID

问题描述

| 需要建议什么是使自动递增的ID在多种表单上相同的最佳方法。 基本上,我使用VB .Net和sql Server作为后端。我写了一些存储过程来插入数据,然后在前端调用存储过程。我有3个表单,一旦提交第一个表单,它将生成一个autoID,然后将用户带到第二个表单。 在第二种形式中,我有一个单独的插入存储过程,可以通过这种方式获取第一种形式生成的ID,并使该ID保持一致。还是他们提交表单后将其存储在变量中,然后在第二个表单中调用它。 我读到了有关“ 0”的信息,但这只是在该会话中获取ID,因为我要提交第一个表单数据,然后再提交至第二个会话,就不是另一个会话了。 谢谢     

解决方法

        您存储的proc可以将标识值作为输出变量返回(使用output子句或scope_identity()来获取它),并将其作为变量存储在应用程序中,然后就可以使用了。您需要确保在此人移至其他记录时以及在所有相关的格式都插入记录之后使该变量无效,以便您不要在其他时间无意使用它。 您不希望为此使用@@ identity,因为它不可靠,并且会引起大量的数据完整性问题,因为如果有人将触发器添加到具有身份的另一个表中,则会给您错误的值。     ,        这会导致您出现问题的事实可能表明这不是最佳的解决方法。也许改为使用DB上的函数返回ID,然后在您的.net代码中进行设置? 如果您具有自动递增的ID,则它仅应在创建记录时递增。您的三个表格是否创建了三个记录?那是你要的吗?如果是这样,那么自动ID绝对不是正确的方法。     ,        我想也许您是在想这个吗?   我读到有关@@ Identity的信息,但这只是在该会话中获取ID,因为我提交的是第一个表单数据,然后再提交到第二个,就不是另一个会话。 您是否不希望通过第一个表单上的输入生成的密钥?   在第二种形式中,我有一个单独的插入存储过程,可以通过这种方式获取第一种形式生成的ID,并使该ID保持一致。还是他们提交表单后将其存储在变量中,然后在第二个表单中调用它。