+ -
当前位置:首页 → 问答吧 → 触发器

触发器

时间:2011-11-28

来源:互联网

这个触发器就是想实现更新一个表的字段然后自动把另一个表的同一字段给更新了,可是没有反应呢
SQL code

ALTER TRIGGER [dbo].[同步更新类别] 
   ON  [dbo].[计划] 
   FOR  UPDATE
AS 
    declare @bm_i nvarchar(128)
    declare @bm_d nvarchar(128)
    declare @n_i int
    declare @n_d int
    declare @wenhao_i nvarchar(128)
    declare @wenhao_d nvarchar(128)
    declare @lb_i nvarchar(128)
    declare @lb_d nvarchar(128)
    select @bm_i=编码,@n_i=年,@wenhao_i=文号,@lb_i=类别 from inserted
    select @bm_d=编码,@n_d=年,@wenhao_d=文号,@lb_d=类别 from deleted
    if(@bm_i<>@bm_d) and (@n_i<>@n_d) and (@wenhao_i<>@wenhao_d) and (@lb_i<>@lb_d) 
    BEGIN
        update 计划项目 set 类别=@lb_i
        where 编码=@bm_i and=@n_i and 文号=@wenhao_i and 类别=@lb_i
    END

作者: stmn1320   发布时间: 2011-11-28

不会看你的东西。。。

作者: longai123   发布时间: 2011-11-28

SQL code
if(@bm_i<>@bm_d) and (@n_i<>@n_d) and (@wenhao_i<>@wenhao_d) and (@lb_i<>@lb_d) 

--改成
if (@lb_i <> @lb_d)

作者: OrchidCat   发布时间: 2011-11-28

SQL code
 if(@bm_i=@bm_d) and (@n_i=@n_d) and (@wenhao_i=@wenhao_d) and (@lb_i<>@lb_d) 

--看LZ的说明,应该是这个意思吧???

作者: OrchidCat   发布时间: 2011-11-28

SQL code

    if(@bm_i<>@bm_d) and (@n_i<>@n_d) and (@wenhao_i<>@wenhao_d) and (@lb_i<>@lb_d) 
    BEGIN
        print 123 --测试一下是否进入了if语句
        update 计划项目 set 类别=@lb_i
        where 编码=@bm_i and=@n_i and 文号=@wenhao_i and 类别=@lb_i
    END

作者: pengxuan   发布时间: 2011-11-28

你应该把and改为or吧

作者: ssp2009   发布时间: 2011-11-28

引用 3 楼 orchidcat 的回复:
SQL code

if(@bm_i=@bm_d) and (@n_i=@n_d) and (@wenhao_i=@wenhao_d) and (@lb_i<>@lb_d)

--看LZ的说明,应该是这个意思吧???

我就是想把“类别”这个字段给更新了,我按你说的还不行不通,其他表不跟着修改

作者: stmn1320   发布时间: 2011-11-28

lz每次只更新一条数据吗?
另外你的头像敢不敢换个,真蛋疼

作者: xiaolinyouni   发布时间: 2011-11-28