我有两张表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
如何循环和增加每个租户?
答案 0 :(得分:0)
您可以使用以下解决方案
invoice_seq
表格中添加一列Tenants
,因此您的Tenants
表应如Tenants(tenant_id,name,...,invoice_seq)
所示,因此在创建发票时,请执行以下步骤
invoice_seq
InvoiceTenants
Invoice
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
希望这会对你有所帮助