[英]Maintain dependency between two tables while executing triggers in oracle
我們如何在 oracle 中執行觸發器時保持兩個表之間的依賴關系? 正如我們所知,如果我們有單個表和基於該表的多個觸發器,我們可以使用 follows 子句,但我擔心的是,如果我們有 2 個不同的表並且有基於這些表的不同觸發器,那么我們如何維護一些在這種情況下的正確順序。
例如:--表 1:
CREATE TABLE emp(
empId number PRIMARY KEY,
FirstName varchar2(20),
LastName varchar2(20),
Email varchar2(25),
PhoneNo varchar2(25),
Salary number(8)
);
--表2:
CREATE TABLE emp_1(
empId number PRIMARY KEY,
FirstName varchar2(20),
LastName varchar2(20),
Email varchar2(25),
PhoneNo varchar2(25),
Salary number(8)
);
EMP
觸發:
CREATE OR replace TRIGGER TRIGGER_emp
BEFORE INSERT OR AFTER UPDATE ON emp
FOR EACH ROW
BEGIN
dbms_output.put_line ('MY EXECUTE ORDER FOR EMP IS SECOND -EXECUTED');
END;
/
在EMP1
上觸發:
CREATE OR replace TRIGGER TRIGGER_emp1
BEFOR INSERT OR AFTER UPDATE ON emp_1
FOR EACH ROW
BEGIN
dbms_output.put_line ('MY EXECUTE ORDER FOR EMP IS FIRST -EXECUTED');
END;
/
現在我希望這個觸發器 TRIGGER_emp1 首先執行,然后這個觸發器最后執行 TRIGGER_emp。 oracle可以嗎
請指導我。
您似乎是最近發布了關於同一主題的兩個問題的用戶的克隆。 有人說你不能那樣做。 觸發器“屬於”單個表,這意味着
emp
表中插入(或更新)值,然后trigger_emp
做某事
emp1
沒有發生任何事情,觸發器trigger_emp1
不會觸發 - 為什么會這樣?
trigger_emp
)影響emp1
表中的行(插入一行或更新現有值)
trigger_emp1
就會做它所做的一切也許,只是也許您應該考慮創建一個存儲過程,其中包含與emp
和emp1
表中的行一起使用的代碼。 然后,而不是依賴觸發器並擔心它們是否會觸發,它們何時會觸發以及以什么順序觸發,您的主事務實際上會調用該過程,然后執行該工作(並影響emp
和emp1
中的行,以您的任何順序想要 - 這很容易做到,因為您只需在過程中重新排列語句)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.