求一个触发器(sqlserver),在线等
TEST表 
 FileNo   字符串         此字段数据格式         类别(四位年份)流水号号   如    "测试(2007)1号 " 
 Str            字符串 
 Nyear      数值 
 tempno   数值 
 触发器监控   fileno值的增删改;将值拆分至三个其他的字段 
 如   插入       "测试(2007)1号 "   到   fileno   ;触发器将三个字段填值如下 
 FileNo   测试(2007)1号 
 Str            测试 
 Nyear      2007 
 tempno   1
------解决方案--------------------Create trigger trig_name On TEST 
 After insert 
 as 
 update TEST set  
 FileNo=substring(t.FileNo,1,2), 
 Str=substring(t.Str,4,4), 
 tempno=substring(t.tempno,9,1) 
 From inserted 
 go   
------解决方案--------------------/*--字符串分函数   
 分拆指定分隔符的的字符串,返回指定位置的字符   
 --邹建 2004.04(引用请保留此信息)--*/   
 CREATE FUNCTION dbo.f_splitSTR( 
 @s varchar(8000),   --要分拆的字符串 
 @split varchar(10), --数据分隔符 
 @pos int            -- 取第几个 
 )RETURNS varchar(100) 
 AS 
 BEGIN 
 DECLARE @splitlen int, @re varchar(100) 
 SET @splitlen=LEN(@split+ 'a ') - 2 
 WHILE CHARINDEX(@split,@s) >  0 AND @pos >  0 
 SELECT 
 @re = LEFT(@s,CHARINDEX(@split,@s)-1), 
 @s=STUFF(@s,1,CHARINDEX(@split, @s)+@splitlen, ' '), 
 @pos = @pos - 1 
 RETURN(CASE  
 WHEN @pos = 0 THEN @re  
 WHEN @pos = 1 THEN @s 
 ELSE NULL END) 
 END 
 GO     
 create table test(FileNo varchar(20),str varchar(10),Nyear varchar(10),tempno int)   
 insert test  
 select 	 'test(2007)1hao ', 
 	dbo.f_splitSTR( 'test(2007)1hao ', '( ',1), 
 	dbo.f_splitSTR(dbo.f_splitSTR( 'test(2007)1hao ', '( ',2), ') ',1), 
 	replace(dbo.f_splitSTR( 'test(2007)1hao ', ') ',2), 'hao ', ' ')     
 --- 只用了个函数就能完成,不知道是不是你要的
------解决方案--------------------Create trigger trig_name On TEST 
 for insert 
 as 
 if @@rowcount> 0 
 begin 
   update TEST set FileNo=substring(t.FileNo,1,2), 
          Str=substring(t.Str,4,4), 
          tempno=substring(t.tempno,9,1) 
        From inserted 
 end 
 go   
 Create trigger trig_name On TEST 
 for insert 
 as 
 if @@rowcount> 0 
 begin 
   update TEST set FileNo=substring(t.FileNo,1,2), 
          Str=substring(t.Str,4,4), 
          tempno=substring(t.tempno,9,1) 
        From inserted 
 end 
 go     
 Create trigger trig_insert On TEST 
 for insert 
 as 
 if @@rowcount> 0 
 begin 
   update TEST set FileNo=substring(t.FileNo,1,2), 
          Str=substring(t.Str,4,4), 
          tempno=substring(t.tempno,9,1) 
        From inserted 
 end 
 go   
 Create trigger trig_update On TEST 
 for update 
 as 
 if update(FileNo) 
 begin 
   update TEST set FileNo=substring(t.FileNo,1,2), 
          Str=substring(t.Str,4,4), 
          tempno=substring(t.tempno,9,1) 
        From inserted 
 end 
 go     
------解决方案--------------------楼主看你了你的题,建议你用事务塞, 
 你的目的是插入一条数据,再对这条数据进行一个更新的操作
------解决方案--------------------create table TEST(FileNo varchar(20), [Str] varchar(20), Nyear int, tempno int) 
 go 
 create trigger tr_Insert on TEST 
 for insert 
 as 
 begin 
 	declare @FileNo varchar(20), @Str varchar(20), @Nyear int, @tempno int