触发器问题!

[复制链接]
查看11 | 回复5 | 2010-3-1 11:20:06 | 显示全部楼层 |阅读模式
表:create table t1(id number(6),

month number(6),

day1 number(8,2),

day2 number(8,2),

day3 number(8,2),

day4 number(8,2),

day5 number(8,2),

day6 number(8,2),

day7 number(8,2),

day8 number(8,2),

day9 number(8,2),

day10 number(8,2),

day11 number(8,2),

day12 number(8,2),

day13 number(8,2),

day14 number(8,2),

day15 number(8,2),

day16 number(8,2),

day17 number(8,2),

day18 number(8,2),

day19 number(8,2),

day20 number(8,2),

day21 number(8,2),

day22 number(8,2),

day23 number(8,2),

day24 number(8,2),

day25 number(8,2),

day26 number(8,2),

day27 number(8,2),

day28 number(8,2),

day29 number(8,2),

day30 number(8,2),

day31 number(8,2))
create table t1 (id number(6),month number(6),value number(8,2));
假如对表t1每次只更新day1到day31列中的一列,欲建一触发器,当更新day1到day31中的任一列时取出新值来更新表t2中对应的value,
怎么做?谢谢!
回复

使用道具 举报

千问 | 2010-3-1 11:20:06 | 显示全部楼层
create or replace trigger ...
...
begin
if updating('DAY1') then
upate t2 set value = value + :new.day1 ...
elsif updating('DAY2') then
upate t2 set value = value + :new.day2 ...
...
end;
回复

使用道具 举报

千问 | 2010-3-1 11:20:06 | 显示全部楼层
http://www.itpub.net/showthread. ... ;highlight=updating
nyfor
Oracle Fan
注册日期: 2002 Jan
来自: 上海浦东
发帖数量: 412


create table t(id number,name varchar2(20));
create or replace trigger t_trg
before update on t
for each row
begin
if updating('name') then
dbms_output.put_line('new name is:' || :new.name);
end if;
end;
/
set serverout on
insert into t values(1,'Jack');
update t set id = 2;
update t set name='Scott';
drop trigger t_trg;
drop table t;
回复

使用道具 举报

千问 | 2010-3-1 11:20:06 | 显示全部楼层
这表的列数还真是不少啊,不知道是关于什么应用的?



回复

使用道具 举报

千问 | 2010-3-1 11:20:06 | 显示全部楼层
是关于电力应用的
回复

使用道具 举报

千问 | 2010-3-1 11:20:06 | 显示全部楼层
最初由 welcome008 发布
[B]表:create table t1(id number(6),

month number(6),

day1 number(8,2),

day2 number(8,2),

day3 number(8,2),

day4 number(8,2),

day5 number(8,2),

day6 number(8,2),

day7 number(8,2),

day8 number(8,2),

day9 number(8,2),

day10 number(8,2),

day11 number(8,2),

day12 number(8,2),

day13 number(8,2),

day14 number(8,2),

day15 number(8,2),

day16 number(8,2),

day17 number(8,2),

day18 number(8,2),

day19 number(8,2),

day20 number(8,2),

day21 number(8,2),

day22 number(8,2),

day23 number(8,2),

day24 number(8,2),

day25 number(8,2),

day26 number(8,2),

day27 number(8,2),

day28 number(8,2),

day29 number(8,2),

day30 number(8,2),

day31 number(8,2))
create table t1 (id number(6),month number(6),value number(8,2));
假如对表t1每次只更新day1到day31列中的一列,欲建一触发器,当更新day1到day31中的任一列时取出新值来更新表t2中对应的value,
怎么做?谢谢! [/B]

在触发器的触发条件为:
AFTER UPDATE ON t1(day1,...,day31)
疑问:更新了其中的多列呢?
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行