Генерация уникального идентификатора при добавлении строки данных в базу данных SQL Server с использованием Visual Basic - PullRequest
1 голос
/ 30 июня 2019

Я сейчас пишу программу инвентаризации для своего будущего бизнеса.Я уже могу добавлять, удалять, обновлять свой сервер.

Моя проблема в том, что я хочу установить уникальный идентификатор, такой как «ID-0012» или что-то подобное, когда я пытаюсь добавить дату в свою таблицу.В настоящее время я получаю только идентификатор = 1,2,3,4 ...

Моя таблица состоит из идентификатора, имени, описания, цены, даты.В настоящее время я ищу ответ через Google, и я обнаружил, что мне нужно кодировать это в SQL Server.Я попытался использовать uniqueidentifier, но получаю сообщение об ошибке типа операции clash.

Ответы [ 2 ]

1 голос
/ 30 июня 2019

Лучшее решение - использовать

  • столбец ID INT IDENTITY(1,1), чтобы SQL Server обрабатывал автоматическое увеличение вашего числового значения
  • a вычисляемый, сохраненный столбец для преобразования этого числового значения в нужное вам значение

Так попробуйте это:

CREATE TABLE dbo.Inventory
  (ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
   InventoryId AS 'ID-' + RIGHT('00000' + CAST(ID AS VARCHAR(5)), 5) PERSISTED,
   .... your other columns here....
  )

Теперь каждый раз, когда вы вставляете строку в dbo.Inventory без указания значений для ID или InventoryId:

INSERT INTO dbo.Inventory (Col1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)

, тогда SQL Server автоматически и безопасно увеличит ваше значение ID, а InventoryId будет содержать такие значения, как ID-00001, ID-00002, ...... и т. Д. - автоматически , безопасно, надежно, без дубликатов.

0 голосов
/ 30 июня 2019

Вы можете выполнить этот шаг.

Для создания таблицы

CREATE TABLE Inventory
  (ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
   InventoryId Varchar(7),
   .... your other columns here....
  )

Для запроса вставки

INSERT INTO Inventory (Col1, Col2, ..., ColN)
VALUES ('ID-'+ right('0000'+CONVERT(varchar(7), (cast(right((select isnull(InventoryId,0)  from Inventory where ID=(select max(ID) Form Inventory)),4) as int)+1)),4), Val2, ....., ValN)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...