初学触发器,写的触发器有问题,请教大家...
 我想更改一下ID号为5的姓名.通过触发器判断是否在表中已经存在相同姓名,如果有,则回滚,否则提交事务,但是我一更新,总是提示:姓名已存在,可是并没有相同的记录,请问大家   我写的触发器有错吗,非常感激。。。   
 表名BB,结构和记录如下:   
 ID                        NAME                                       CLASS          
 1	小本                  	1                            
 2	张华                  	1                            
 3	王东                  	2                            
 4	国华                  	2                            
 5	小f                     	1                              
 --创建更新触发器   
 CREATE   TRIGGER   trigger_update 
 ON   BB	FOR   UPDATE 
 	AS  	 
 	BEGIN   TRANSACTION  	 
 	DECLARE   @beforeName   CHAR(6)	--新添加的姓名  	 
 	SELECT   @beforeName=name   FROM   INSERTED--新记隶   
 	PRINT    '新记隶名称 '   +   @beforeName  	 
 	IF   EXISTS   (SELECT   *   FROM   bb   WHERE   name=@beforeName)	--判断新姓名是否已经存在    
 		BEGIN 
 			PRINT       '姓名已存在 ' 
 			ROLLBACK   TRANSACTION 
 		END 
 	ELSE 
 		BEGIN 
 			COMMIT   TRANSACTION    
 		END   
 /*更新一条记录*/ 
    --UPDATE   bb   SET   name= '小猫 '   WHERE   ID=5
------解决方案--------------------commit部分不用也可以吧   
 CREATE TRIGGER trigger_update 
 ON BB	 
 FOR UPDATE 
 	AS  	 
 	BEGIN TRANSACTION  	 
 	DECLARE @beforeName CHAR(6)	--新添加的姓名  	 
 	SELECT @beforeName=name FROM INSERTED--新记隶   
 	PRINT  '新记隶名称 ' + @beforeName  	 
 	IF (SELECT count(*) FROM bb WHERE name=@beforeName) <> 0begin	 
          ROLLBACK TRANSACTION 
 	PRINT   '姓名已存在 ' 
 end
------解决方案--------------------用以下这种方法 
 create table test(uid varchar(4), [name] varchar(5) ) 
 insert test 
 select  '001 ',      'aa ' union all 
 select  '002 ',      'bb '     
 create trigger roy on test 
 for insert 
 as 
 if exists(select 1 from test,inserted i where test.name=i.name group by test.name having count(*)> 1) 
 begin 
 	raiserror 50000  '用户已存在! ' 
 	rollback tran 
 	return 
 end