【发布时间】:2020-01-05 19:33:21
【问题描述】:
我是 PL/SQL 的新手。我正在尝试在table A 中编写一个trigger insert,只要table B 中有一个insert(要在表B 中插入,以下select 必须返回1 )。
SELECT 1
INTO v_exists
FROM TFRG V
WHERE
SUBSTR(:NEW.COD_OBJT, 1, 2) = V.CDP
AND SUBSTR(:NEW.COD_OBJT, 12, 2) = V.CDS
AND V.CDSIT = 'V'
AND V.CDG IN (‘E’,’G’);
问题是我不知道如何在我的触发器中包含这个选择:
CREATE OR REPLACE TRIGGER Trigger_name
-- PL/SQL Block
AFTER INSERT
ON B FOR EACH ROW
declare
v_exists NUMBER;
begin
begin
SELECT 1
INTO v_exists
FROM TFRG V
WHERE
SUBSTR(:NEW.COD_OBJT, 1, 2) = V.CDP
AND SUBSTR(:NEW.COD_OBJT, 12, 2) = V.CDS
AND V.CDSIT = 'V'
AND V.CDG IN (‘E’,’G’);
INSERT INTO A
(NR);
VALUES
(:new.objt);
exception
when NO_DATA_FOUND then
null;
end;
exception
when OTHERS then
null;
END
【问题讨论】:
-
那么,它有什么问题(除了
when others- 删除它!除非它后面跟着raise,否则它代表你的代码中的一个错误,因为它成功隐藏了可能发生的任何错误)。运行该代码时会发生什么? -
@Littlefoot,我不知道如何在表 B 中编写插入部分。只要 B 中有插入,触发器就会执行某些操作。要在 B 中插入,select 必须返回 1 . 但是我该怎么写呢?
-
"Insert into B" 在触发器之外完成(例如,在 SQLPlus 提示符下,在 SQL Developer 中,您的 Apex 应用程序中,......真的没关系。触发器将检测该动作并*触发,运行您在其中编写的代码。
-
@porthfind:我很困惑。你知道怎么写
INSERT INTO A,却不知道怎么写INSERT INTO B?我们不知道表 B 是什么样子,所以我不明白你会如何期望这里有人给你建议。 ???
标签: oracle plsql database-trigger