从SP获取主键

时间:2013-07-20 13:15:10

标签: sql stored-procedures insert primary-key

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

2 个答案:

答案 0 :(得分:0)

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

以下是一般概念:

  1. 开始交易。
  2. 插入。
  3. 使用主键执行您需要执行的操作,包括更新插入的行以反映值。
  4. 提交或回滚
  5. 通过在插入之前开始事务,您可以确保在提交事务之前没有其他人能够看到新行。如果密钥不符合您的喜好,您可以回滚该事务,而其他任何人都不会知道。如果密钥足够,您可以在提交之前修改刚刚插入的行。

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

答案 1 :(得分:0)

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

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