我发现以下链接为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
答案 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作为组合主键,则可以使用唯一索引来确保只有一个组合