当你插入字段值"资料ID","P_ID","R_ID"和"保留"时,如果要使触发器自动填入"资料代码"值,可在触发器中访问INSERTED表得到刚刚插入的记录的P_ID值,生成"资料代码"值("0"+P_ID),然后用UPDATE更新"资料代码"值.

解决方案 »

  1.   

    create table aa(
     资料id int,  P_id int, R_id int,  资料代码 int, 资料 char(10),    保留 char(10))
    create trigger a on aa for insert
    as
    declare @bl char(10),@Rid int,@count int,@zlid int
    select @bl=保留 from inserted
    select @Rid=R_id from inserted
    select @zlid=资料id from inserted
    if  @bl='True' 
      update aa set 资料代码 =''where 资料id=@zlid
    else
      begin 
     select @count=count(*) from aa where R_id=@Rid and 保留='False'
     update aa set  资料代码=@count where 资料id=@zlid
       end
    --插入的时候‘资料代码’不插入值
    insert aa values(1,0,1,             '','地区','True') 
    insert aa values(2,       0  ,    2 ,'','部门','True')
    insert aa values(3,       1,      1   , '',       '广东省',   'False')
    insert aa values(4 ,      1 ,     1  ,  ''  ,      '湖南省' ,  'False')
    insert aa values(5  ,     2  ,    2 ,   ''   ,     '市场部'  , 'False')
    insert aa values(6    ,   2    ,  2  ,  ''  ,      '公关部',   'False')
    insert aa values(7,       2  ,    2 ,   '' ,       '销售部',   'False')