存储过程数据重复问题
在用户向表1提交新数据的时候 先给表1 做个查询 检查是否有与字段A,有相同的数据
有的话 就不让插入 返回该重复的字段内容 没有的话就插入一条提交过来的数据
现在已有存储过程如下:
ALTER procedure [dbo].[Pro_1]
@A varchar(50),
@B varchar(50),
@C varchar(100),
@Remark1 varchar(50),
@Remark2 varchar(50)
as
begin
insert into Contact([A],[B],[C],[Remark1],[Remark2])
Values(@A,@B,@C,@Remark1,@Remark2)
end
请问在插入之前 做个查询判断 应该怎么写?
[最优解释]
ALTER procedure [dbo].[Pro_1]
@A varchar(50),
@B varchar(50),
@C varchar(100),
@Remark1 varchar(50),
@Remark2 varchar(50)
as
begin
if exists(select 1 from Contact where [A]=@a)
begin
return 0--已存在
end
else
begin
insert into Contact([A],[B],[C],[Remark1],[Remark2])
Values(@A,@B,@C,@Remark1,@Remark2)
return 1--表示成功
end
end
[其他解释]
ALTER procedure [dbo].[Pro_1]
@A varchar(50),
@B varchar(50),
@C varchar(100),
@Remark1 varchar(50),
@Remark2 varchar(50)
as
begin
if not exists (select 1 from contact where a=@a)
begin
insert into Contact([A],[B],[C],[Remark1],[Remark2])
Values(@A,@B,@C,@Remark1,@Remark2)
end
end
[其他解释]
这个用触发器很方便
[其他解释]
不推荐使用触发器,还是在存储过程内判断比较稳妥。
ALTER procedure [dbo].[Pro_1]
@A varchar(50),
@B varchar(50),
@C varchar(100),
@Remark1 varchar(50),
@Remark2 varchar(50)
as
begin
if exists(select 1 from Contact where [A]=@a)
begin
return 0--已存在
end
else
begin
insert into Contact([A],[B],[C],[Remark1],[Remark2])
Values(@A,@B,@C,@Remark1,@Remark2)
return 1--表示成功
end
end