新增加后执行PL / SQL代码

时间:2018-10-22 16:28:36

标签: oracle oracle11g oracle-apex oracle-apex-5.1

我有一个pl / sql代码可以发送电子邮件(工作正常)。但是,我希望在用户表中创建新条目时执行它,而忽略旧条目。

  

场景。输入新用户(执行PL / SQL代码)。如果我打开   表,没有输入新用户(不执行pl / sql代码)。

     

如果2周后输入了新用户(执行代码)

所以代码仅在表中有新条目时执行

下面是输入新用户时创建新ID的触发器

create or replace trigger "BI_TEST"   
  before insert on "TEST"               
  for each row  
begin   
  if :NEW."ID" is null then 
    select "TEST_SEQ".nextval into :NEW."ID" from sys.dual; 
  end if; 
end; 

下面是发送电子邮件的代码

BEGIN
  UTL_MAIL.send(sender     => 'user@gmail.com',
                recipients => 'user1@gmail.com',

                subject    => 'UTL_MAIL Test',
                message    => 'If you get this message it worked!');
END;
/

1 个答案:

答案 0 :(得分:3)

听起来好像您希望触发器在表中插入新行时发送电子邮件。我将不理会您现有的触发器,并添加一个插入后触发器。想象一下,如果您插入了一个新用户,但是数据违反了约束-插入将被回滚,但是插入前触发器仍将发送通知电子邮件。

create or replace trigger "AI_TEST_EMAIL"   
  after insert on "TEST"               
  for each row  
begin   
  UTL_MAIL.send(sender     => 'user@gmail.com',
                recipients => 'user1@gmail.com',
                subject    => 'New user created',
                message    => 'A new row was inserted in TEST with username: ' || :NEW.username );
end;