我有一个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;
/
答案 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;