当前位置: 代码迷 >> Oracle管理 >> 新手上路,触发器的写法
  详细解决方案

新手上路,触发器的写法

热度:72   发布时间:2016-04-24 04:16:24.0
新手上路,求一个触发器的写法
本帖最后由 lp0301 于 2014-08-05 09:27:39 编辑
现有一个表emp,里面有a,b,c,d四个字段,d是主键。
现在我要写个触发器,达到下面这个效果:

当emp的d列的a字段更新成1时,更新d列b=d列c,然后更新d列c=‘’。

请问各位大神,这个触发器怎么写?

------解决方案--------------------
引用:
现有一个表emp,里面有a,b,c,d四个字段,d是主键。
现在我要写个触发器,达到下面这个效果:

当emp的d列的a字段更新成1时,更新d列b=d列c,然后更新d列c=‘’。

请问各位大神,这个触发器怎么写?

当emp的d列的a字段更新成1时,更新d列b=d列c,然后更新d列c=‘’。
这句啥意思,没看懂

访问原值用 :old.xxx
访问新值用 :new.xxx
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

现有一个表emp,里面有a,b,c,d四个字段,d是主键。
现在我要写个触发器,达到下面这个效果:

当emp的d列的a字段更新成1时,更新d列b=d列c,然后更新d列c=‘’。

请问各位大神,这个触发器怎么写?

当emp的d列的a字段更新成1时,更新d列b=d列c,然后更新d列c=‘’。
这句啥意思,没看懂

访问原值用 :old.xxx
访问新值用 :new.xxx


就是更新 d行的a=1后,触发更新 d行的b=d行的c 然后更新d行c=‘’

举例说明 emp表现有3行数据
a      b     c     d
2            c1   001
2            c2   002
2            c3   003

这时我做了一个更新 把 d=002 的a 更新成了1,现要得到这个结果
a      b      c     d
2             c1    001
1     c2            002
2             c3    003

当然这个可以直接用sql实现,但是我程序不能修改了 只能做个触发器补充了


触发器不能直接对同一个表进行操作,可以用视图或临时表来实现
  相关解决方案