DBMS_OUTPUT.PUT_LINE 没有向用户显示消息

DBMS_OUTPUT.PUT_LINE not showing message to user

我正在尝试创建一个触发器,用于检查我的 table 乘客在 namesdreservation_status 列中的空值,如果它为空,则将其设置为默认值并向用户显示一条消息它被设置为默认值。

触发器已创建并且可以正常设置默认值,但不会向用户显示任何消息。

create or replace trigger mytrigger
    before insert or update on passenger
    for each row
    when (new.reservation_status IS NULL)
begin
    IF :new.reservation_status IS NULL THEN
        :new.reservation_status := 'not reserved';
        dbms_output.put_line('reservation status invalid, set to default');
    end IF;
end mytrigger
/

如果值为空,则该值更改为 'not reserved',但未显示消息 'reservation status invalid, set to default'。帮助。

触发器在实际触发之前不会执行任何操作 - 在本例中,是在 INSERT 上。

clear screen
set serveroutput on

drop table passenger;
create table passenger (id integer, reservation_status varchar2(25));

create or replace trigger mytrigger
    before insert or update on passenger
    for each row
    when (new.reservation_status IS NULL)
begin
    IF :new.reservation_status IS NULL THEN
        :new.reservation_status := 'not reserved';
        dbms_output.put_line('reservation status invalid, set to default');
    end IF;
end mytrigger;
/

insert into passenger values (1, null);
commit;

如果我 运行 在 SQLPlus、SQLcl 或 SQL 开发人员 -

如果我们检查 table,您可以看到我们的触发器 'worked.'