在SQL Server中生成重复值的ID

时间:2019-04-09 08:37:08

标签: sql sql-server

我发现以下链接为SQL Server中的重复项分配了相同的ID, 我的理解是没有sql server函数自动生成它,而不是在链接中使用插入和更新查询,是该语句为True,如果是,那么如果有人将数据插入MyTable然后运行insert和update,那将是触发器?通过链接查询:

Assign identical ID to duplicates in SQL server

 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 :(得分:0)

这是您想要的吗?我想不出会增加新单词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

如果由于某种原因不能将id和word作为组合主键,则可以使用唯一索引来确保只有一个组合