基于查询的自动增量列

时间:2018-04-22 20:35:19

标签: sql-server ms-access access-vba database-trigger

我在后端尝试使用SQL Server的新手MS Access表单(链接到)。

所以我有一个简单的表格,用于创建用

创建的发票
create table Invoice
(
    ID INT not null primary key,
    IssuerID int not null,
    InvoiceID int not null,
    CustomerID int not null
)

也许我甚至不需要ID,因为我可以通过对唯一地识别条目(IssuerID,InvoiceID)。

总而言之,我希望IssuerIDCustomerID添加发票,而InvoiceID自然会增加1.我可以做类似的事情

SELECT ISNULL(MAX(InvoiceID), 0) + 1 AS InvoiceID
FROM Invoice
WHERE IssuerID = @sp;

其中@sp是某个值。

在UI逻辑中,我有一个组合框来选择IssuerID(ACCESS),这里我的问题就开始了。

我已为InvoiceID使用了一个文本框。我希望它通过下一个ID更新表格(即,如果IssuerID = 5,有3张已开具发票,下一张发票应编号为4)。 我无法直接进行SQL工作,也无法在IssuerID组合中的after_update中使用VBA。

所以我创建了一个视图(在SQL Server中并链接到它),包含所有可能的IssuerIds及其相应的nextInvoiceIds。

SELECT         
    IssuerID, NextInvoiceID
FROM     
    (SELECT  
         Issuers.ID AS IssuerID, 
         ISNULL(MAX(Invoice.InvoiceID), 0) + 1 AS NextInvoiceID
     FROM    
         Issuers 
     FULL OUTER JOIN 
         Invoice ON Issuers.ID = Invoice.IssuerID
     GROUP BY 
         Issuers.ID) AS UNDATA

接下来,我可以选择nextInvoiceID,但现在我还需要它来更新实际的列。

是否可以来自同一个文本框?

我应该使用某种触发器来回退更新此(InvoiceID)(或者SQL Server中是否还有其他自动增量选项)?

0 个答案:

没有答案