ALTER PROCEDURE [dbo].[K_FS_GenerateAutoDCNo]
AS
BEGIN
SET NOCOUNT ON;
DECLARE @dcno VARCHAR(50), @latestindent VARCHAR(50)
SET @dcno = (SELECT '0000')
SET @latestindent = (SELECT dcno FROM K_FS_GenerateDcno
WHERE sno = (SELECT max(sno)
FROM K_FS_GenerateDcno))
IF EXISTS (SELECT dcno FROM K_FS_GenerateDcno WHERE dcno in (@dcno))
BEGIN
SELECT (@latestindent + 1) AS dcno
END
ELSE
SELECT (@dcno) AS dcno
END
Это показывает первый раз 0000
, в следующий раз он показывает 1
Как увеличить число?
Но я хочу, чтобы отобразить 0001
.. как я могу это сделать?
Пожалуйста, помогите мне
Эта процедура имеет проблемы с параллелизмом. Вы можете получить дублирующиеся значения под [обычно] большой нагрузкой. –
Я думаю, что может возникнуть небольшая проблема с вашим запросом здесь. После того, как ваш запрос достигнет 9999 записей, какой будет следующий вывод? Даже если он перерабатывается и возвращается как 0001, вы можете получить ошибку ** PK **. Я предлагаю добавить к нему временную метку или дату. См. Эту ссылку http://stackoverflow.com/questions/20883196/incrementing-custom-primary-key-values-in-sql – Mahe
Возможный дубликат http://stackoverflow.com/questions/20883196/incrementing-custom-primary- key-values-in-sql – Mahe