我们遇到的情况是,多个表中有一个名为 Customer_Number 的列。该列是所有表中的标识列,但是有没有办法可以使该列在所有表中唯一。
例如,如果我在 table_one 中添加一行,并且标识列为其分配值 1,现在如果有人在 table_two 、 table_third 或 table_four 的 Customer_Number 列中添加另一行,则应为其分配值 2。
我该怎么做,我一直在网上阅读,似乎我必须创建一个表来记录任何表的最后生成的值,并从该表中获取值的 MAX() 并向其添加 1 以获得下一个可用值,是否有更简单的方法?
我自己没用过,但我认为你需要新的Sequence Object http://msdn.microsoft.com/en-us/library/ff878091%28v=sql.110%29.aspx
您将创建一个序列对象,而不是使用标识值,只需从序列对象中获取下一个值。
创建序列对象
CREATE SEQUENCE Sqnc_Number_Generator AS INT --<-- This can be Bigint as well
START WITH 1 -- Start with value 1
INCREMENT BY 1 -- Increment with value 1
MINVALUE 1 -- Minimum value to start is 1
MAXVALUE 50000 -- Maximum it can go to 5000
NO CYCLE -- Do not go above 5000
CACHE 500 -- Increment 500 values in memory rather than incrementing from IO
获取下一个值
SELECT NEXT VALUE FOR dbo.Sqnc_Number_Generator AS NxtValue;
SQL FIDDLE http://sqlfiddle.com/#!6/e2f3c/2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)