我正在尝试创建 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
希望您的建议谢谢
在 PK 上使用标识属性,并在视图中添加"CP-"的业务逻辑。
有关 indentiy 的更多详细信息,请参见此处