-2

我正在尝试创建 PK,CP-00001但我的代码正在创建 PK,因为INV-19072013-0001在我的存储过程中我需要创建,CP-00001如果不存在行,否则它会在以前的 id 中递增,然后 id 变为CP-00002

这是我的存储过程:

ALTER procedure [dbo].[sp_AutoGenerateInoviceNumber] 
AS 
   Declare @InvNumberDate varchar(15) 

   Select @InvNumberDate = REPLACE(CONVERT(VARCHAR(10), GETDATE(), 105),'-','') 

   Declare @NewNumber varchar(20)

   If Exists (Select 1 from tbl_InvoiceMaster Where InvoiceNo LIKE '%'+ @InvNumberDate +'%') 
   Begin
       Select Top 1 @NewNumber = InvoiceNo 
       from tbl_InvoiceMaster 
       Where InvoiceNo LIKE '%'+ @InvNumberDate +'%'
       order by ROW_ID desc 

       Declare @NewSerialNo varchar(10) 
       Set @NewSerialNo = SUBSTRING(@NewNumber, CHARINDEX('-',@NewNumber, 5) + 1, LEN(@NewNumber))    
       Set @NewNumber = SUBSTRING(@NewNumber, 0, CHARINDEX('-',@NewNumber, 5))   

       Select @NewNumber = @NewNumber + '-' + dbo.func_IncrementNumber(@NewSerialNo)  
   End
Else
  Set @NewNumber = 'INV-'+@InvNumberDate+'-0001'
Select @NewNumber

希望您的建议谢谢

4

1 回答 1

1

在您的 PK 上使用身份属性并在视图中添加“CP-”的业务逻辑。

有关 indentiy 的更多详细信息,请参见此处

于 2013-09-13T19:23:15.033 回答