【发布时间】:2017-07-11 18:12:51
【问题描述】:
这是由序列生成并通过 ACCOUNT_NUMBER_TRIG 触发器插入到 ACCOUNTS 表中的 ACCOUNT_NUMBER 的值,我需要通过触发器 ACCOUNTS_TRANSCATION_TRIG_1 将其插入到 TRANSACTION TABLE 中
CREATE OR REPLACE TRIGGER ACCOUNT_NUMBER_TRIG
BEFORE INSERT
ON ACCOUNTS
FOR EACH ROW
WHEN (NEW.ACCOUNT_NUMBER is not null)
DECLARE
V_ACC_NO ACCOUNTS.ACCOUNT_NUMBER%TYPE;
BEGIN
SELECT ACCOUNT_NO_SEQ.nextvaL INTO V_ACC_NO FROM DUAL;
:NEW.ACCOUNT_NUMBER := V_ACC_NO;
END ACCOUNT_NUMBER_TRIG;
------------------------------------------------------------------------------
CREATE OR REPLACE TRIGGER ACCOUNTS_TRANSCATION_TRIG_1 AFTER
INSERT ON ACCOUNTS FOR EACH ROW DECLARE CURSOR ACCOUNTS_CUR IS
SELECT ACCOUNT_NUMBER FROM ACCOUNTS;
DECLARE
TEMP_1 NUMBER(5,0);
BEGIN
SELECT ACCOUNTS.ACCOUNT_NUMBER FROM INSERTED INTO TEMP_1
OPEN ACCOUNTS_CUR;
INSERT
INTO TRANSACTIONS VALUES
(
SYSDATE,
- :NEW.ACCOUNT_NUMBER,
'NEW ACCOUNT',
0
);
CLOSE ACCOUNTS_CUR;
END ACCOUNTS_TRANSCATION_TRIG_1;
【问题讨论】:
-
您是否尝试添加一个通过诸如 column_trigger 之类的触发器更新或插入的列?当触发器工作时,更新或插入此列 = 1 或 true。
-
问题是我需要插入一条包含更新列的值的新记录
标签: sql oracle plsql database-trigger