使用SQL,当从SP向表中插入值时,是否可以在将值添加到表之前获取主键的值?从SP获取主键
Q
从SP获取主键
1
A
回答
0
利用关系数据库的力量,这当然是可能的。假设像马丁史密斯说的那样,你使用自动生成的密钥是,那么你可以使用一个事务来做你正在寻找的东西。
这里的总体思路:
- 开始事务。
- 做插入。
- 使用主键执行任何您需要执行的操作,包括更新插入的行以反映值。
- 提交或回滚
通过您的插入之前开始交易,你可以保证,没有人会能够看到新的行,直到您提交事务。如果密钥不符合您的喜好,您可以回滚事务,而其他人不会知道。如果密钥足够,可以在提交之前修改刚刚插入的行。
由于您拥有一个事务,所以在您提交之前,没有其他人可以看到您插入的中间数据。因此,您可以在实际插入之前更新刚刚插入的行,就好像您拥有主键一样。
0
如果您使用的是SQL Server,最好的方法是使用MERGE或INSERT命令使用OUTPUT子句来取回密钥。即使这不在插入之前,您可以使用OUTPUT的结果来加回数据的结果以插入后续的子记录。
另外,如果您使用SQL Server,则可以查看IDENT_CURRENT函数,该函数将返回表的当前标识值。如果你正在以基于集合的方式编写你的SQL,我上面提到的OUTPUT对我来说最适合我。
相关问题
- 1. 从插入获取主键
- 2. 从dbSet获取主键列
- 3. 获取主键从数据库
- 4. 从核心数据中获取主键
- 5. C#/ Access从Access 2003获取主键
- 6. 从数据库获取主键(Python/Django)
- 7. 从SP获取ssis包输出
- 8. 获取表的主键名
- 9. 获取PostDeleteEventListener上的主键
- 10. SAS获取表主键
- 11. 获取表的主键?
- 12. 从PHP获取MySQL主键和外键约束?
- 13. 从主键asp.net获取SQL外键列值c#
- 14. 从自动增量主键获取已删除主键的列表
- 15. 获取行计数主键表的主键
- 16. 获取在其他SP执行的SP选择的ID
- 17. 获取没有主键的子项NHibernate
- 18. 如何在Oracle中获取主键列?
- 19. SQL聚合密钥并获取主键
- 20. 获取最后插入的行主键
- 21. 获取dynamoDB的主键列表
- 22. HQL:获取对象的主键
- 23. 通过查询获取表主键列
- 24. iPhone核心数据获取主键
- 25. 获取主键列Zend_Db_Table_Rowset对象
- 26. 执行executemany后获取主键
- 27. Mule - 在插入后获取主键
- 28. 如何获取主键的值?
- 29. 获取插入值的主键
- 30. php/jQuery获取选定值的主键
“将值添加到表之前”?不,因为有人可能会在你面前插入东西。你想解决什么问题? – spender
@spender - 你似乎在假设'IDENTITY',它肯定可以用外部生成的PK值,例如序列或guid。 –
*** SQL ***只是*结构化查询语言* - 许多数据库系统使用的语言,但不是数据库产品...许多东西都是特定于供应商的 - 所以我们真的需要知道什么**数据库系统**(以及您使用的版本)(请相应地更新标签)。 –