日期:2014-05-18  浏览次数:20434 次

在存储过程里,在更新记录后,如果发现有重复的记录,就让刚才的更新记录失效,可以实现吗?
各位朋友,存储过程如下:
alter   procedure   insert_update
@emp_id,@card_id,@emp_name,@insert_update,@return   varchar(100)   output

as
if   @insert_update= 'update '  
      begin
        update   表   set   card_id=@card_id,   emp_name=@emp_name   whereemp_id=@emp_id
/*
问题1:想在更新记录操作之后,才做一个判断,如果
select   emp_name   from   employee     where   emp_name=@emp_name   group   by   emp_name   having   count(emp_name)> 1的话,就提示用户“姓名不能重复!”,然后将刚才的更新操作取消,而且,这个判断必须要在更新记录之后才做,而不是更新记录之前做,请问这个该如何实现,是不是必需要用事务,如果要用事务的话,该怎样写,请各位朋友赐教,谢谢!!!

*/
      end


------解决方案--------------------
alter procedure insert_update
@emp_id,@card_id,@emp_name,@insert_update,@return varchar(100) output

as
if @insert_update= 'update '
begin
begin transaction
update 表 set card_id=@card_id, emp_name=@emp_name whereemp_id=@emp_id
if exists (select 1 from 表 group by emp_name having count(emp_name)> 1)
rollback transaction
else
commit transaction
end

------解决方案--------------------
直接在 emp_name 列上建立唯一约束,然后启用错误不就行了?不用这么复杂吧?

------解决方案--------------------
来看钻石的。
------解决方案--------------------
可以用触发器来实现啊,这样比较方便