代码:-- 官方公告审核 触发器create or replace trigger forum_aduit
after insert
on easyw.forum_official_announcement
for each row
begin
update easyw.audit_noaudit_stat t set t.amount = t.amount + 1 where t.class_id = 10001;
end;
上述代码可以正常运行。但是现在要在easyw.forum_official_announcement 这个表中加一个状态位来判断 是否更新
如果是0 才更新。。 请教如何实现判断部分
after insert
on easyw.forum_official_announcement
for each row
begin
update easyw.audit_noaudit_stat t set t.amount = t.amount + 1 where t.class_id = 10001;
end;
上述代码可以正常运行。但是现在要在easyw.forum_official_announcement 这个表中加一个状态位来判断 是否更新
如果是0 才更新。。 请教如何实现判断部分
解决方案 »
- oracle order by 降序不了
- oracle 查询实例问题 , 一张表里面的值相互比较
- Oracle的查询问题??????????
- 在数据库上线之前和上线初期需要注意哪些问题?
- 高分求 weblogic与websphere性能比较 ,oracle与sybase性能比较文档
- 问关于update语句返回值的问题
- 类似 sql server 语句中的 if exists ...(如果存在就...)用法在oracle中怎么用?
- 小虫在redhat 7.3下装oracle 8i的问题,各位高手请进!
- exp数据导出问题
- mysql优化,视图union查询很慢。高手请入!
- oracle 数据库中自定义全局变量
- oracleRAC环境下local_listener的修改问题
update easyw.audit_noaudit_stat t set t.amount = t.amount + 1 where t.class_id = 10001;
end if;
create or replace trigger forum_aduit
after insert
on easyw.forum_official_announcement
for each row
begin
if :new.字段<>:old.字段 then
update easyw.audit_noaudit_stat t set t.amount = t.amount + 1 where t.class_id = 10001;
else
null;
end if;
end;
2 (id number(10),
3 name varchar2(10),
4 state number(10));
Table created
SQL>
SQL> create table test_tri2
2 (id number(10),
3 name varchar2(10),
4 state number(10));
Table created
SQL>
SQL> create or replace trigger tr_test
2 after insert on test_tri
3 for each row
4 declare
5 -- local variables here
6 begin
7 if :new.state=0 then
8 insert into test_tri2 values(:new.id,:new.name,1);
9 end if;
10 end tr_test;
11 /
Trigger created
SQL> insert into test_tri values(1,'test',0);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from test_tri2;
ID NAME STATE
----------- ---------- -----------
1 test 1
SQL>
create or replace trigger forum_aduit
after insert on easyw.forum_official_announcement
for each row
when (new.status=0)
begin
update easyw.audit_noaudit_stat t set t.amount = t.amount + 1 where t.class_id = 10001;
end;
/
create or replace trigger forum_aduit
before insert on forum_official_announcement for each row
declare
v_state forum_official_announcement.state%type;
begin
v_state:=:new.state;
if v_state=0 then
update audit_noaudit_stat t set t.amount = t.amount + 1 where t.class_id = 10001;
end if;
end
after insert
on easyw.forum_official_announcement
for each row
begin
update easyw.audit_noaudit_stat t set t.amount = t.amount + 1 where t.class_id = 10001;
end;最后在:new一直报错的情况下 我这样写的 修改代码如下:
代码:-- 官方公告审核 触发器create or replace trigger forum_aduit
after insert
on easyw.forum_official_announcement
for each row
when(:new.state = 0)
begin
update easyw.audit_noaudit_stat t set t.amount = t.amount + 1 where t.class_id = 10001;
end;
insert a where not exists(select 1 from b where a.col = b.col)
update a set a.col = value where exists(select 1 from b where a.col = b.col)
如果表上有索引,效率非常高,数据量较大时,别用in