我可能看这个太久了,所以我希望有人能在这里帮助我。
我正在比较文件元数据以识别唯一的数据块,从而检测重复数据删除的潜力……来吧。
drop proc insertFile
go
create proc [dbo].[insertFile] @fileHash char(64), @name varchar(200)
as
set nocount on;
declare @fileId int
declare @klientId int
set @klientId = (SELECT cast(RAND() * 10 + 1 as int))
IF NOT EXISTS (select * from data_file where hash_key = '@fileHash')
begin
insert into data_file (hash_key) values (@fileHash)
end
set @fileId = (select id from data_file where hash_key = '@fileHash')
insert into klient_file (data_file, klient, name) values (@fileId, @klientId, @name)
hash_key 有一个唯一约束,当我输入一个存在的值时违反了这一点,这不应该发生,IF 检查它是否存在,并且应该只在哈希值不存在时插入。
无论如何,数据都应该进入 kclient_file ......
再次,错误是违反唯一约束,应该通过 IF 检查避免,IF 自己工作,只是不在程序中。有什么想法吗?(这一切都在 localdb 实例上运行)