当前位置: 代码迷 >> Sql Server >> 在存储过程里,在更新记录后,如果发现有重复的记录,就让刚才的更新记录失效,可以实现吗?解决方法
  详细解决方案

在存储过程里,在更新记录后,如果发现有重复的记录,就让刚才的更新记录失效,可以实现吗?解决方法

热度:89   发布时间:2016-04-27 19:44:10.0
在存储过程里,在更新记录后,如果发现有重复的记录,就让刚才的更新记录失效,可以实现吗?
各位朋友,存储过程如下:
alter   procedure   insert_update
@emp_id,@card_id,@emp_name,@insert_update,@return   varchar(100)   output

as
if   @insert_update= 'update '  
      begin
        update   表   set   [email protected]_id,   [email protected]_name   [email protected]_id
/*
问题1:想在更新记录操作之后,才做一个判断,如果
select   emp_name   from   employee     where   [email protected]_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 [email protected]_id, [email protected]_name [email protected]_id
if exists (select 1 from 表 group by emp_name having count(emp_name)> 1)
rollback transaction
else
commit transaction
end

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

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