2015-10-29 39 views
0

我正在制作一个有两个不同表的程序(以及更多,但这些是我遇到的问题)。一个名为SYNPaymentHistory,另一个名为OTHERSPaymentHistorySQL Server:匹配两个diff表中的2个diff列的标识规范

它们具有几乎相同的列,但SYNPaymentHistory包含每个Syndicate的“ID”编号。对方的表为任何随机支付公司收到比从辛迪加

等我做了,其中一人填写付款申请页面,当所有做到这一点,它应该打印出收据。收据有一个SerialNb,它是两个表中找到的列(这是一个具有Identity Specification的INT列,每个输入上增加1)。

我的问题是我希望SerialNb在它们之间被同步。

例如:说我只是填写了来自一个财团,SerialNb支付应用在收据的顶部应该说5001如果我想填补票的支付应用程序的公司赚因聚会,我'希望该收据具有5002的SerialNb。

是否有某种方法可以链接来自2个不同表的2列?我认为WHILE循环可以半解决问题,如果其中一个自动增加1,另一个有WHILE循环,如果我= SYNHistoryPayment.SerialNb,那么我= i + 1 (我是OTHERSHistoryPayment),但它不会以其他方式运作,因为SYNHistoryPayment最终不会关心其他历史付款的价值。

它是否以任何可能的方式与图表相关?我无法正确理解图表的用法,所以我希望这不是解决问题的方法。

如果您需要任何附加信息,我很乐意在需要的信息中编辑。使用

程序: 的Visual Studio 2015年, SQL Server Management Studio中2014

回答

1

SQL Server有一个功能来解决眼前这个问题。它被称为序列。您可以创建一个序列,并且在任何时候您都可以通过sql server为您提供序列中的下一个值。每个请求都会保证以不断增加的顺序获得唯一结果。

创建一个序列 - 当您要在任一表中创建一行时,从序列中获取下一个值并使用该序列。

除了使用序列解决您的问题还解决了同时运行的应用程序的多个实例的问题。您不必担心 - 应用程序的每个实例都将获得自己的编号。

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

+0

谢谢!这解决了我的问题。 –