1

使用 SQL,当从 SP 向表中插入值时,是否可以在将值添加到表之前获取主键的值?

4

2 回答 2

0

如果您使用 SQL Server,最好的方法是使用 MERGE 或 INSERT 命令使用 OUTPUT 子句取回您的密钥。即使这不是在插入之前,您也可以使用 OUTPUT 的结果来连接数据结果以插入后续子记录。

此外,如果您使用的是 SQL 服务器,您可以查看 IDENT_CURRENT 函数,该函数将返回表的当前标识值。如果您以基于集合的方式编写 SQL,那么我上面提到的 OUTPUT 最适合我。

于 2013-07-21T01:36:21.713 回答
0

这当然是可能的,利用关系数据库的力量。假设像 Martin Smith 所说的那样,您正在使用自动生成的密钥,那么您可以使用事务来做您正在寻找的事情。

这是一般的想法:

  1. 开始交易。
  2. 进行插入。
  3. 使用主键做任何你需要做的事情,包括更新插入的行以反映值。
  4. 提交或回滚

通过在插入之前开始事务,您可以确保在您提交事务之前没有其他人能够看到新行。如果密钥不符合您的喜好,您可以回滚事务,其他人不会知道。如果密钥足够,您可以在提交之前修改刚刚插入的行。

因为你有一个事务,所以在你提交之前没有其他人可以看到你插入的中间数据。因此,您可以更新刚刚插入的行,就好像您在实际插入之前拥有主键一样。

于 2013-07-20T19:37:27.143 回答