日期:2014-05-17  浏览次数:20732 次

oracle 触发器,在一张表插入数据时进行操作
因为这张表是从别的数据库中的读取的数据,其中插入表的代码已经写死了。
想了半天,想用触发器完成以下功能:
在A表中插入数据后,触发器启动,把A表中B字段的值,进行四舍五入运算,保留一位小数
oracle基础知识不是很好,自己写了半天,没弄出来,现在求指教啊
谢谢了


------解决方案--------------------
create or replace trigger my_trigger
after insert of b on A
for each row
begin
update A set b=round(b,1) where 表中的时间;(不加时间就是全表更新一次,不好。)
 end;
------解决方案--------------------
可以不用再对本表操作,可以不用自治事务
SQL code
CREATE TABLE a(c1 NUMBER(20,5),c2 NUMBER(20,5));

CREATE OR REPLACE TRIGGER xa 
BEFORE INSERT ON a FOR EACH ROW 
BEGIN 
  :NEW.c2:=Round(:NEW.c2,1);
END xa;

INSERT INTO a VALUES (6.18,6.18);
SELECT * FROM a;
output:
C1    C2
6.18    6.2