把stateid字段设置为计算字段.

解决方案 »

  1.   

    create table test (get_money int,get_num int,stateid int)
    insert into test select 1,2,2
    union all select 2,2,7
    union all select 3,3,8create trigger tr_test1
    on test
    for update
    as
    update test set stateid =1 where get_money=1 and get_num=1
    update test set get_money=1,get_num=1 where stateid=2
    select * from test
    結果:
    get_money   get_num     stateid     
    ----------- ----------- ----------- 
    1           1           1
    2           2           7
    3           3           8create trigger tr_test2
    on test
    for insert
    as
    update test  set stateid=1 
    from test a inner join inserted b 
    on a.get_money=b.get_money and a.get_num=b.get_num and
     b.get_money =1 and b.get_num=1insert into test(get_money,get_num) values(2,3)
    insert into test(get_money,get_num) values(1,1)
    select * from test
    結果:
    get_money   get_num     stateid     
    ----------- ----------- ----------- 
    1           1           1
    2           2           7
    3           3           8
    1           1           1
    2           3           NULL
    1           1           1