【问题标题】:SQL Server: Match Identity Specification of 2 diff columns in 2 diff tablesSQL Server:匹配 2 个差异表中 2 个差异列的标识规范
【发布时间】:2015-10-29 23:03:43
【问题描述】:

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

除了 SYNPaymentHistory 包含每个 Syndicate 的“ID”编号外,它们具有几乎相同的列。其他人的表格是公司收到的任何随机付款,而不是来自辛迪加的付款

我制作了一个页面,供人们填写付款申请,完成所有这些后,它应该打印出收据。收据有一个 SerialNb,它是两个表中的一个列(它是一个 INT 列,标识规范在每个输入上增加 1)。

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

例如:假设我刚刚填写了来自辛迪加的付款申请,收据顶部的 SerialNb 应显示 5001。如果我想填写公司因以下原因赚取的门票的付款申请聚会,我希望那张收据的 SerialNb 为 5002。

有什么方法可以链接来自 2 个不同表的 2 列吗?我认为 WHILE 循环可以解决一半的问题,如果其中一个自动增加 1,而另一个有一个 WHILE 循环,如果 i = SYNHistoryPayment.SerialNb,则 i = i + 1 (我是OTHERSHistoryPayment),但反过来就行不通,因为 SYNHistoryPayment 最终会不关心 OTHERSHistoryPayment 的值。

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

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

使用的程序: 视觉工作室 2015, SQL Server 管理工作室 2014

【问题讨论】:

    标签: sql-server database calculated-columns


    【解决方案1】:

    SQL Server 有一个功能可以解决这个问题。它被称为序列。您创建一个序列,并且在任何时候您都可以使用 sql server 为您提供序列中的下一个值。保证每个请求都有一个递增的唯一结果。

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-02-13
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-19
      • 1970-01-01
      相关资源
      最近更新 更多