【发布时间】:2013-06-10 16:13:43
【问题描述】:
我可能看这个太久了,所以我希望有人能帮助我。
我正在比较文件元数据以识别唯一的数据块,从而检测重复数据删除的潜力......这里是。
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 实例上运行)
【问题讨论】:
标签: sql tsql stored-procedures sql-server-2012 localdb