在存储过程里,在更新记录后,如果发现有重复的记录,就让刚才的更新记录失效,可以实现吗?
各位朋友,存储过程如下:
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 列上建立唯一约束,然后启用错误不就行了?不用这么复杂吧?
[解决办法]
来看钻石的。
[解决办法]
可以用触发器来实现啊,这样比较方便