Генерация идентификатора для повторяющихся значений на сервере SQL - PullRequest
0 голосов
/ 09 апреля 2019

Я нашел следующую ссылку для назначения идентичного идентификатора для дубликатов в SQL-сервере. Насколько я понимаю, нет функции sql-сервера, которая автоматически генерирует его, вместо использования запросов вставки и обновления в прикрепленной ссылке, является ли это утверждение True, если да, то чтобудет триггером, если, например, кто-то вставит данные в MyTable, а затем запустит запрос вставки и обновления по ссылке:

Присвоение идентичного идентификатора дубликатам на сервере SQL

 INSERT INTO secondTable (word) SELECT distinct word FROM MyTable;
 UPDATE MyTable SET ID = (SELECT id from secondTable where MyTable.word = secondTable.word)

спасибо, S

1 Ответ

0 голосов
/ 09 апреля 2019

Это то, что вы хотите? Я не могу придумать «автоматического» решения, которое бы просто увеличивало Id для новых слов.

CREATE TABLE MyTable (
    Id INT NOT NULL,
    Word NVARCHAR(255) NOT NULL
    PRIMARY KEY (Id, Word)); -- primary key will make it impossible to have more than one combination of word and id

DECLARE @word NVARCHAR(255) = 'Hello!';

-- Get existing id or calculate a new id 
DECLARE @Id INT = (SELECT Id FROM MyTable WHERE Word = @word);
IF(@id IS NULL) SET @Id = (SELECT MAX(Id) + 1 FROM MyTable);

INSERT INTO MyTable (Id, Word)
VALUES (@id, @word)

SELECT * FROM MyTable

Если по каким-то причинам вы не можете использовать идентификатор и слово в качестве объединенного первичного ключа, вы можете использовать уникальный индекс, чтобы убедиться, что существует только одна комбинация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...