【问题标题】:SQL auto increment range or exclude numbersSQL 自动递增范围或排除数字
【发布时间】:2016-06-16 12:41:47
【问题描述】:

我正在尝试从 sql 的自动增量列中添加范围或排除数字。

我们有一个关于作业编号的自动递增列,因为每个作业都是唯一的。问题是我们也将自己视为客户,作业编号为 99999,而其他作业编号以 10500 结尾。当自动递增发生时,它会从 99999 开始。这有一种方法可以排除这个或我是否必须手动设置 IDENTITY_INSERT ON 并自己插入 ID?

提前致谢

【问题讨论】:

  • 如果您使用 SET IDENTITY_INSERT ON 并插入值 99999,则标识列将使用 100000 作为其下一个值。您不能在不影响标识值本身的情况下将“序列外”值插入标识列......
  • 所以没有办法将范围设置为自动递增?
  • 否 - 如果您需要范围和类似的东西,您需要查看自 SQL Server 2012 及更高版本起可用的 SEQUENCE 对象
  • 或使用 负值 例如-1 为您的“特殊”内部工作 - 这不会“破坏”您的身份价值!
  • 谢谢 Marc_s。将最挑衅地调查 SQL SEQUENCE。看起来很有希望。

标签: sql sql-server auto-increment identity-insert


【解决方案1】:

您可以在“Microsoft SQL Server”中设置自动增量
检查:SQL-How to Insert Row Without Auto incrementing a ID Column?
这样你就可以自己设置ID了。

  Set Identity_Insert [TableName] On
  -- --------------------------------------------
  Insert TableName (pkCol, [OtherColumns])
  Values(pkValue, [OtherValues])
  -- ---- Don't forget to turn it back off ------
  Set Identity_Insert [TableName] Off

【讨论】:

  • 不完全是我想要的,但同时会使用它。 SQL SEQUENCE 似乎是我所追求的。似乎更加自动化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-04
  • 2011-08-21
  • 2018-01-01
  • 2014-04-15
  • 2020-08-06
  • 1970-01-01
相关资源
最近更新 更多