【发布时间】:2012-03-21 13:11:14
【问题描述】:
我正在开发一个更新内容管理系统,管理员可以在其中添加、编辑和删除更新。
在管理员添加更新的表单中,我想创建一个文本框,用于显示数据库中名为“Update_ID”的 isIdentity 列的下一个值。我不能只从数据库中检索最后一行并向其添加 1,因为如果管理员删除数据库中的最后一条记录,则文本框中的值将不会反映下一行的真实“Update_ID”。
请问这个怎么解决?有没有办法获取数据库中下一个 isIdentity 列的实际值?谢谢:)
【问题讨论】:
-
为什么你需要显示该值,因为它可能在一毫秒后就不同了?只有在通过
SCOPE_IDENTITY(SQL-Server) 创建和检索它之后才能信任它。 -
@Tim Schmelter 我需要在“添加更新”表单上显示值。但是,当从同一表单添加图像时,我需要在 SQL 语句中使用此值,这才是真正的问题发生的时候。
-
@Steve 我使用的是 SQL Server 2008。我的问题是,如果管理员删除标识为 23 的最后一行,然后添加更新,则文本框中的值将显示 23,数字 23 是从同一表单添加图像时使用,即使要插入的行的实际值为 24。
-
因此,新记录在“Updates”表中的“Update_ID”为 24,而新图像在“Images”表中的“Update_ID”为 23。结果,我失去了图像和更新之间的关系。此外,这些图像现在可能与另一个更新相关联,与它们无关。
-
看看my answer here,它显示了如何检索新的id。然后,您可以将此 id 用作图像表的外键。或者您可以将两者包装在一个存储过程(和事务)中。