Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每个存储区唯一的SQL多个序列_Sql_Database_Tsql_Sequence - Fatal编程技术网

每个存储区唯一的SQL多个序列

每个存储区唯一的SQL多个序列,sql,database,tsql,sequence,Sql,Database,Tsql,Sequence,我有一张包含贷款的桌子。这些贷款来自不同的商店,商店位于不同的州 州政府要求每个门店位置必须有贷款的唯一数字代码,且序列不得有任何间隙。因为这些数据在一个合并的表中,所以我一直在寻找一种为每个存储分配特定序列的方法。序列的内容可以跨存储复制,也就是说,存储10对于事务以及存储15可以具有序列值10 我知道我可以在插入后使用触发器查找用于存储的最后一个数字,并将其递增一,但我正在寻找更优雅、更抗错误的方法来完成此任务。使用序列 CREATE SEQUENCE loans.StateOfXYLoan

我有一张包含贷款的桌子。这些贷款来自不同的商店,商店位于不同的州

州政府要求每个门店位置必须有贷款的唯一数字代码,且序列不得有任何间隙。因为这些数据在一个合并的表中,所以我一直在寻找一种为每个存储分配特定序列的方法。序列的内容可以跨存储复制,也就是说,存储10对于事务以及存储15可以具有序列值10

我知道我可以在插入后使用触发器查找用于存储的最后一个数字,并将其递增一,但我正在寻找更优雅、更抗错误的方法来完成此任务。

使用序列

CREATE SEQUENCE loans.StateOfXYLoanNum
    START WITH 100000
    INCREMENT BY 1 ;
GO
需要您的程序、触发器或手动干预来获取下一个值并将其插入表中


更多信息:

这是报告的一次性问题吗?或者这是持续分配数字的要求?状态要求似乎相当神秘,但法律就是法律。随着新记录被插入,我们唯一的选择可能是使用触发器,或者将所有插入内容包装到表中的存储过程中,该存储过程执行基本相同的操作(这是我将采取的方法).我很清楚这一点,但我认为在最终确定方法之前,我会将其提交给集体思考。感谢您验证我的想法。幸运的是,您不能为此使用序列。记住,这里有法律要求。序列可以有间隙;以下是文档中的一个示例:“如果使用或sp_sequence_get_range函数的下一个值请求数字,则仍然可能出现间隙,但是这些数字要么未使用,要么在未提交的事务中使用。”不幸的是,对于这种类型的需求,需要相当昂贵的锁定来确保适当的枚举。