【问题标题】:How to get a table's current identity value using SSMS?如何使用 SSMS 获取表的当前标识值?
【发布时间】:2015-12-10 20:48:06
【问题描述】:

我想知道是否有办法使用 SSMS 获取表的身份值。

我希望在表格的设计视图中找到它,但在那里找不到。

澄清一下

  1. 这必须仅使用 SSMS 的 UI 完成,而不是必须使用的查询 书面。这样非专家也可以简单地通过它。
  2. 并且必须给出实际值,而不仅仅是最高标识 存在,这样就可以验证身份是否与架构和数据一起从复制到此数据库的原始表中复制。

【问题讨论】:

  • 为什么不把查询放到这个“非专家”可以运行的视图或存储过程中呢?尽管不能信任编写 SELECT 查询的人可能根本不应该信任使用 SSMS,但这是另一回事。
  • @MichaelMcGriff 你当然是正确的。类似的事情就是现在正在做的事情。但我很惊讶我在设计视图中找不到它,并认为我遗漏了一些明显的东西——因此提出了这个问题。
  • This link 您可能会感兴趣。 “它存储在内部,而不是您可以直接更新(甚至查看)的表中。”
  • @MichaelMcGriff 谢谢。但这似乎与那里的以下帖子相矛盾(在下面的答案中也是如此)。

标签: sql sql-server ssms ssms-2014


【解决方案1】:

你可以这样做:

select IDENT_CURRENT('MyTable')

这将向您显示上次为您的表创建的标识值。

【讨论】:

  • 谢谢。但我的意思是 SSMS - 使用 SSMS 的 UI 而不使用 writing 查询。
  • 查询 IS 是 SSMS 用户界面的一部分。
【解决方案2】:

在表格设计视图中这是不可能的。但一种方法是在 SSMS 中如下

  • 右击表名

  • 点击“编辑前 200 行” 选项。这将打开前 200 条记录。

  • 现在点击 “显示 SQL 窗格” 或按 “Ctrl + 3”会告诉你 当前查询

  • 现在将查询更改为这种方式 - Select top 1 id from yourTable order by id desc

【讨论】:

  • 您不需要前 3 步来完成最后一步。您可以直接编写该查询,OP 表示他们不想这样做。
  • 谢谢。但这仅适用于简单的情况。如果最后一行被删除,或者表是从其他地方复制而没有身份的——我主要感兴趣的是这种情况——验证身份是否被实际复制——这将失败。
  • 只是澄清我不是反对者。 (在我更新它之前,我的问题可能还不够清楚,这是在你发布答案之后。)
  • 这不会给你当前的标识值,只给你表中一个字段的 MAX。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
  • 2022-11-15
  • 2013-08-25
  • 2020-02-01
  • 2013-03-27
相关资源
最近更新 更多