如何在ORACLE行级触发器中BEFORE INSERT,更改当前插入值后,提交数据库?

--1、CREATETABLETEST_A(ANUMBER(10),BNUMBER(10),CNUMBER(10));--2、INSERTINTOTEST_A(A,B,C... --1、
CREATE TABLE TEST_A(A NUMBER(10),B NUMBER(10),C NUMBER(10));
--2、
INSERT INTO TEST_A (A,B,C) VALUES(NULL,5,6);
--3、
CREATE OR REPLACE TRIGGER TRG_TEST_A
BEFORE INSERT ON TEST_A
FOR EACH ROW
DECLARE
LN_B NUMBER(10);
LN_C NUMBER(10);
CURSOR INSERTED_CURSOR IS
SELECT :NEW.B, :NEW.C FROM DUAL;
BEGIN
LN_B := 0;
LN_C := 0;

IF INSERTING THEN
BEGIN
OPEN INSERTED_CURSOR;
FETCH INSERTED_CURSOR
INTO LN_B, LN_C;

WHILE INSERTED_CURSOR%FOUND LOOP
BEGIN
--???????????
--这里写 LN_B * LN_C 的结果给TEST_A中的字段 A (当前新插入行的)
--???????????
FETCH INSERTED_CURSOR
INTO LN_B, LN_C;;
END;
END LOOP;
CLOSE INSERTED_CURSOR;
END;
END IF;
END TRG_TEST_A;
展开
 我来答
47522341
推荐于2016-09-17 · TA获得超过668个赞
知道小有建树答主
回答量:189
采纳率:0%
帮助的人:139万
展开全部
CREATE OR REPLACE TRIGGER TRG_TEST_A
BEFORE INSERT ON TEST_A
FOR EACH ROW
BEGIN
IF INSERTING THEN
:new.A := nvl(:new.B,0) * nvl(:new.C,0);
END IF;
END TRG_TEST_A;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式