【问题标题】:SQL Multiple Sequences Unique per Store每个存储唯一的 SQL 多个序列
【发布时间】:2015-04-17 13:51:32
【问题描述】:

我有一个包含贷款的表。这些贷款来自不同的商店,商店处于不同的状态。

有一个州要求,每个商店位置必须有一个唯一的贷款数字代码,并且顺序不能有任何间隙。由于这些数据在一个合并表中,我一直在寻找一种方法来为每个商店分配一个特定的序列。序列的内容可以跨商店复制,即商店 10 和商店 15 的交易序列值可能为 10。

我知道我可以在插入后使用触发器来查找用于存储的最后一个数字并将其加一,但我正在寻找更优雅和抗错误的东西来完成此操作

【问题讨论】:

  • 这是一次性报告问题吗?或者这是持续分配数字的要求吗?州的要求似乎很神秘,但法律就是法律。
  • 插入新记录时继续
  • 您唯一的选择可能是使用触发器或将所有插入数据包装到存储过程中的表中,该存储过程基本上执行相同的操作(这是我将采用的方法)。
  • 差不多是这样想的,但我认为我会在最终确定方法之前将其提交给集体思想。感谢您验证我的想法

标签: sql database tsql sequence


【解决方案1】:

使用序列!

CREATE SEQUENCE loans.StateOfXYLoanNum
    START WITH 100000
    INCREMENT BY 1 ;
GO

需要您的程序、触发器或手动干预来获取下一个值并将其插入表中。

更多:https://msdn.microsoft.com/en-us/library/ff878091.aspx

【讨论】:

  • 不幸的是,您不能为此使用序列。 . .请记住,这里有法律要求。序列可以有间隙;以下是文档中的一个示例:“如果使用 NEXT VALUE FOR 或 sp_sequence_get_range 函数请求数字,仍然会出现差距,但是这些数字要么未使用,要么用于未提交的事务。”不幸的是,对于这种类型的需求,需要相当昂贵的锁定来确保适当的枚举。
猜你喜欢
  • 1970-01-01
  • 2012-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多