使用SQL,当从SP向表中插入值时,是否可以在将值添加到表之前获取主键的值?
答案 0 :(得分:0)
这当然是可能的,利用关系数据库的力量。假设像Martin Smith说的那样, 使用自动生成的密钥,那么您可以使用事务来执行您正在寻找的事情。
以下是一般概念:
通过在插入之前开始事务,您可以确保在提交事务之前没有其他人能够看到新行。如果密钥不符合您的喜好,您可以回滚该事务,而其他任何人都不会知道。如果密钥足够,您可以在提交之前修改刚刚插入的行。
由于您有一个事务,因此在提交之前没有其他人可以看到您插入的中间数据。因此,您可以更新刚刚插入的行,就像在实际插入之前拥有主键一样。
答案 1 :(得分:0)
如果您使用的是SQL Server,最好的方法是使用MERGE或INSERT命令使用OUTPUT子句来获取密钥。即使这不在插入之前,您也可以使用OUTPUT的结果将数据结果连接起来以插入后续的子记录。
此外,如果您使用的是SQL Server,则可以查看IDENT_CURRENT函数,该函数将返回表的当前标识值。如果您以基于集合的方式编写SQL,我上面提到的OUTPUT最适合我。