SQL 剧院数据库的开发者触发器

SQL Developer Trigger for theatre database

我是 SQL 的新手,我正在尝试为学校的剧院数据库项目创建触发器。 剧院有许多座位。例如阿波罗剧院有2100个座位。嘉宾参观演出。我想创建一个触发器,检查来宾人数是否大于座位数并进行更正。以下代码仅适用于阿波罗剧院,我在数据库中还有 2 个剧院。如果代码有效,我会自己添加它们:)

create or replace trigger seats
before insert on show
for each row
when (old.number_of_guests is not null)
declare name_theatre show.name_theatre%TYPE;
begin
    if name_theatre = 'Apollo Theatre' and :new.guests > 2100
    then :new.number_of_guests := 2100;
    end if;
end;

代码可以编译,但如果我插入一个有 2200 位客人的节目,触发器不会将其更改为 2100。 谢谢你帮助我:)

插入触发器中没有old,所有值必须使用:new。并且您正在声明未分配任何值的变量。该变量根本不需要。

create or replace trigger seats
before insert on show
for each row
begin
    if :new.name_theatre = 'Apollo Theatre' and :new.guests > 2100
    then :new.number_of_guests := 2100;
    end if;
end;