VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 922|回复: 7

请问一个触发器的问题

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-7 09:30:01 | 显示全部楼层 |阅读模式
我写了一个触发器如下,是当resume表的jlzt like 1111%时,更新其它字段一下,
其它情况更新情况不同,但是检查语法没错误,但是运行时却有问题,帮我看看.

CREATE TRIGGER [upjlzttojl] ON [dbo].[Resume]
FOR  UPDATE
AS
begin
   if update(jlzt)
   begin
      declare @jlzt varchar(15)
      select @jlzt=jlzt from updated
      if @jlzt like '1111111111%'
        update resume set zjl=3 from updated where reid=updated.reid
      else if @jlzt like '1111%'
        update resume set zjl=2 from updated where reid=updated.reid
      else if @jlzt like '0000000000%'
        update resume set zjl=0 from updated where reid=updated.reid
      else
        update resume set zjl=1 from updated where reid=updated.reid
   end
   if update(ejlzt)
   begin
      declare @ejlzt varchar(15)
      select @ejlzt=ejlzt from updated
      if @ejlzt like '1111111111%'
        update resume set ejl=3 from updated where reid=updated.reid
      else if @ejlzt like '1111%'
        update resume set ejl=2 from updated where reid=updated.reid
      else if @ejlzt like '0000000000%'
        update resume set ejl=0 from updated where reid=updated.reid
      else
        update resume set ejl=1 from updated where reid=updated.reid
   end
end
回复

使用道具 举报

0

主题

114

帖子

69.00

积分

新手上路

Rank: 1

积分
69.00
发表于 2020-3-27 16:30:01 | 显示全部楼层
begin
   declare @jlzt varchar(15)
     set @jlzt=jlzt
      select @jlzt from updated
      if @jlzt like '1111111111%'
回复

使用道具 举报

0

主题

88

帖子

55.00

积分

新手上路

Rank: 1

积分
55.00
发表于 2020-3-27 18:00:01 | 显示全部楼层
CREATE TRIGGER [upjlzttojl] ON [dbo].[Resume]
FOR  UPDATE
AS
begin
   if update(jlzt)

   begin
      declare @jlzt varchar(15)

      if (select count(1) from updated where jlzt like '1111111111%') > 0
        update resume set zjl=3 from updated where reid=updated.reid
      else if (select count(1) from updated where jlzt like '1111%') > 0
        update resume set zjl=2 from updated where reid=updated.reid
      else if (select count(1) from updated where jlzt like '0000000000%') > 0
        update resume set zjl=0 from updated where reid=updated.reid
      else
        update resume set zjl=1 from updated where reid=updated.reid
   end
   if update(ejlzt)
   begin
      declare @ejlzt varchar(15)
      select @ejlzt=ejlzt from updated where ejlzt like '1111111111%'
      if (select count(1) from updated where ejlzt like '1111111111%') > 0
        update resume set ejl=3 from updated where reid=updated.reid
      else if (select count(1) from updated where ejlzt like '1111%') > 0
        update resume set ejl=2 from updated where reid=updated.reid
      else if (select count(1) from updated where ejlzt like '0000000000%') > 0
        update resume set ejl=0 from updated where reid=updated.reid
      else
        update resume set ejl=1 from updated where reid=updated.reid
   end
end
回复

使用道具 举报

0

主题

114

帖子

69.00

积分

新手上路

Rank: 1

积分
69.00
发表于 2020-3-27 19:45:01 | 显示全部楼层
begin
   declare @jlzt varchar(15)
     set @jlzt=jlzt
      declare @str nvarchar(1000)
      set @str='select '+@jlzt+' from updated'
      exec(@str)
      if @jlzt like '1111111111%'
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-3-31 15:15:01 | 显示全部楼层
还是不行,晕
回复

使用道具 举报

0

主题

88

帖子

55.00

积分

新手上路

Rank: 1

积分
55.00
发表于 2020-4-2 23:15:01 | 显示全部楼层
刚看到  哪有updated这个表啊     只有inserted和deleted啊
回复

使用道具 举报

0

主题

88

帖子

55.00

积分

新手上路

Rank: 1

积分
55.00
发表于 2020-4-3 10:45:01 | 显示全部楼层
CREATE TRIGGER [upjlzttojl] ON [dbo].[Resume]
FOR  UPDATE
AS
begin
   if update(jlzt)
   begin
      if (select count(1) from inserted where jlzt like '1111111111%') > 0
        update resume set zjl=3 from inserted where reid=inserted.reid
      else if (select count(1) from inserted where jlzt like '1111%') > 0
        update resume set zjl=2 from inserted where reid=inserted.reid
      else if (select count(1) from inserted where jlzt like '0000000000%') > 0
        update resume set zjl=0 from inserted where reid=inserted.reid
      else
        update resume set zjl=1 from inserted where reid=inserted.reid
   end
   if update(ejlzt)
   begin
      if (select count(1) from inserted where ejlzt like '1111111111%') > 0
        update resume set ejl=3 from inserted where reid=inserted.reid
      else if (select count(1) from inserted where ejlzt like '1111%') > 0
        update resume set ejl=2 from inserted where reid=inserted.reid
      else if (select count(1) from inserted where ejlzt like '0000000000%') > 0
        update resume set ejl=0 from inserted where reid=inserted.reid
      else
        update resume set ejl=1 from inserted where reid=inserted.reid
   end
end
回复

使用道具 举报

0

主题

40

帖子

29.00

积分

新手上路

Rank: 1

积分
29.00
发表于 2020-4-30 15:15:02 | 显示全部楼层
cv4bf5d65fd  


   
刚看到  哪有updated这个表啊     只有inserted和deleted啊

  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表