SQL 服务器:匹配 2 个不同表中 2 个不同列的标识规范

SQL Server: Match Identity Specification of 2 diff columns in 2 diff tables

我正在制作一个程序,它有两个不同的 tables(还有更多,但那些是我遇到的问题)。一个叫做 SYNPaymentHistory,另一个叫做 OTHERSPaymentHistory

它们具有几乎相同的列,除了 SYNPaymentHistory 包含一个 "ID" 数字,用于每个 Syndicate。其他人的 table 用于公司收到的任何 随机 付款,而不是来自辛迪加

我制作了一个页面,一个人可以在其中填写付款申请表,当所有这些都完成后,它应该会打印出一张收据。收据有一个 SerialNb,它是在两个 table 中都可以找到的一个列(它是一个 INT 列,其标识规范在每次输入时增加 1)。

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

例如: 说我刚刚填写了一个 Syndicate 的付款申请,收据顶部的 SerialNb 应该是 5001。如果我想填写一个门票付款申请公司因聚会而赚取的收入,我希望该收据的 SerialNb 为 5002。

有什么方法可以 link 来自 2 个不同 table 的 2 列吗?我认为一个 WHILE 循环可以解决一半的问题,如果其中一个自动增加 1,另一个有一个 WHILE 循环,如果 i = SYNHistoryPayment.SerialNb,那么 i = i + 1 (我是 OTHERSHistoryPayment) 但它不会以其他方式解决,因为 SYNHistoryPayment 最终会不关心 OTHERSHistoryPayment 的值。

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

如果您需要任何其他信息,我很乐意编辑所需的信息。

使用的程序: Visual Studio 2015年, SQL 服务器管理工​​作室 2014

SQL服务器有一个功能可以解决这个问题。它被称为序列。您创建一个序列,您可以随时 sql 服务器为您提供序列中的下一个值。保证每个请求都有一个递增顺序的唯一结果。

创建一个序列——当您想在任一行中创建一行时 table 从序列中获取下一个值并使用它。

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

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