I created a function that will serves as primary key for my table
CREATE FUNCTION dbo.NewCustomerPK()
RETURNS VARCHAR (10)
AS
BEGIN
DECLARE @LastCustID VARCHAR(10)
DECLARE @newID INT
DECLARE @charID CHAR(10)
SELECT
@LastCustID = MAX(CustID)
FROM
dbo.TestCust
IF (@LastCustID IS NULL)
BEGIN
SET @LastCustID = 'CUST000001'
END
ELSE
BEGIN
SET @newID = RIGHT(@LastCustID, 6) + 1
SET @charID = 'CUST' + RIGHT(('0000000' + CONVERT(VARCHAR(6), @newID)), 6)
SET @LastCustID = @charID
END
RETURN @LastCustID
END
CREATE TABLE dbo.TestCust
(
CustID VARCHAR(10) PRIMARY KEY NOT NULL DEFAULT dbo.NewCustomerPK(),
Name VARCHAR(50)
)
And tried to insert a test data
DECLARE @Counter INT = 1,
@Stopper INT = 500000
WHILE(@Counter <= @Stopper)
BEGIN
INSERT INTO dbo.TestCust(NAME)
VALUES('test'+CONVERT(VARCHAR(6), @Counter))
SET @Counter = @Counter + 1
END
It works fine but when I try a parallel run(Running the loop data insertion in the new window) it cause a Primary Constraint Violation Error