我正在使用sql server作为数据库在C#中开发一个项目。所以问题是我的项目中有一个算法,每次返回一个值;保存到数据库中(作为我的项目要求)。如果算法重复一个值,那也将保存到不需要的数据库(复制)并导致一些问题。我需要帮助来克服一个唯一值在它发生时只保存一次的问题;数据库中没有重复。我试图将该列作为主键,但后来发现主键违规异常。
答案 0 :(得分:4)
只需在线或存储过程中使用EXISTS查询
您的查询程序可以检查该行是否已存在
编辑:啊哈抱歉忘记了,那将是愚蠢的:D
IF NOT EXISTS(SELECT UniqueValue FROM UniqueValuesTable WHERE UniqueValue = @NewValue)
INSERT INTO UniqueValuesTable VALUES (@NewValue)
编辑:这是一个显示它正常工作的SQL小提琴
http://sqlfiddle.com/#!3/b87f9/3
正如dems指出的那样,操作不是原子的,因此在多会话情况下可能存在PK违规
替代方案是:
INSERT INTO UniqueValuesTable SELECT @NewValue WHERE NOT EXISTS (SELECT UniqueValue FROM UniqueValuesTable WHERE UniqueValue = @NewValue)