有表table如下:
id name code element version
1 aa 11 ee 0
2 bb 22 ee 0
现在想做到:在新增,修改表中的id,name 等值的时候,那条数据的version字段每修改一次+1
id name code element version
1 aa 11 ee 0
2 bb 22 ee 0
现在想做到:在新增,修改表中的id,name 等值的时候,那条数据的version字段每修改一次+1
调试欢乐多
befor insert or update on table表名
declear
:new.version := nvl(:new.version,0) + 1;
end abcdefg;
before insert or update
on tt
for each row
begin
:new.version:=nvl(:old.version,-1)+1;
end tg_before_test;
before update
on tt
for each row
begin
:new.version:=nvl(:old.version,-1)+1;
end tg_before_test;
可以行级的,用before的触发器:new.version=:old.version+1;
before insert or update of id,name
on t00
for each row
begin :new.version:=:old.version+1;end tg_before_test;
修改表中的id,name 等值的时候,那条数据的version字段每修改一次+1
只要在update后面加个of id,name就行了。
create or replace trigger tr_update_version
before insert or update
on tab_data
for each row
begin
IF INSERTING OR UPDATING('ID') OR UPDATING('NAME') THEN
:new.version:=:old.version+1;
END IF;
end tr_update_version;
nvl可能是笔者担心,有的记录没有这个version值,所以就用nvl判断一下,如果是null就是-1,然后+1,新的version就是0了。