考虑现有表

时间:2018-01-31 12:54:15

标签: sql-server

我有两张表Tenants和Inovices。发票上有tenant_id列,我需要将tentan_id的invoice_number增量字段添加到表发票中。

我的问题与此Auto increment considering Tenant id

相同

实际上,这个解决方案对我有用,但现在我需要填充表上现有行的invoice_number增量字段,然后在此解决方案中应用触发器。

像这样的东西,但是由tenant_id增加:

DECLARE @invoice_number INT 
SET @@invoice_number = 0 
UPDATE Invoices
SET @invoice_number = invoice_number = @invoice_number + 1 
GO 

如何循环和增加每个租户?

1 个答案:

答案 0 :(得分:0)

您可以使用以下解决方案

  • invoice_seq表格中添加一列Tenants,因此您的Tenants表应如Tenants(tenant_id,name,...,invoice_seq)所示,因此在创建发票时,请执行以下步骤
    1. 增加表invoice_seq
    2. 中的InvoiceTenants
    3. 通过设置Invoice
    4. 更新invoice_number ='I' format(tenant_id,'000') + '-' + format(invoice_seq,'000000')记录

此处您的发票号码如下:

I001-000001 <-- tenant 1 and sequence 1
I001-000002
I001-000003 <-- tenant 1 and sequence 3
I002-000001 <-- tenant 2 and sequence 1
I003-000001 <-- tenant 3 and sequence 1

**示例代码**

- 对于下面的示例,我将使用@tenant = 1,下面的代码可以转换为应用程序中存储的代码存储过程

declare @invoice_seq int,
        @tenant int = 1 -- here you can change the number to the way you wish

-- retrieve the last tenant +1

select @invoice_seq = invoice_seq+1 from Tenants where tenant_id=@tenant

-- add the invoice

insert into Invoices(tenant_id,invoice_number,... other columns....)
values (@tenant,'I' + format(@tenant,'000') + '-' + format(@invoice_seq,'000000'),... other columns...)

-- update the invoice_seq in the Tenants table

update Tenants set invoice_seq = @invoice_seq where tenant_id=@tenant

希望这会对你有所帮助