我在Oracle数据库实例中以下列方式创建了一个触发器。
CREATE OR REPLACE TRIGGER after_logon_on_database AFTER LOGON ON DATABASE
BEGIN
-- some things that should be done on logon
END;
/
我的实例的Oracle服务器上运行了多个数据库实例。我希望此触发器仅在特定实例上运行。
AFTER LOGON ON DATABASE
触发器是否在给定Oracle服务器上的每个数据库实例上运行?
答案 0 :(得分:2)
每次有人登录数据库时都会触发AFTER LOGON ON DATABASE
触发器,无论哪个实例。因此,每次都会触发每个实例的触发器。
但是,您可以将条件应用于触发器,因此在您的情况下,您需要类似这样的触发器才能触发触发器。实例1:
CREATE OR REPLACE TRIGGER after_logon_on_database AFTER LOGON ON DATABASE
WHEN (SYS_CONTEXT('USERENV','INSTANCE') = 1)
BEGIN
-- some things that should be done on logon
END;
/