DBMS_OUTPUT.PUT_LINE未向用户显示消息

我正在尝试创建一个触发器,该触发器将检查我的表乘客中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
/

如果该值为null,但未显示消息“保留状态无效,设置为默认值”,则该值将更改为“未保留”。帮助。

Yushujun 回答:DBMS_OUTPUT.PUT_LINE未向用户显示消息

在实际触发之前,触发器不会执行任何操作-在这种情况下,是在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 Developer中运行它-

enter image description here

如果我们检查表格,您会看到我们的触发器“有效”。

enter image description here

本文链接:https://www.f2er.com/3144604.html

大家都在问