所以我试图创建这个触发器,但我一直有这个错误
create or replace trigger Maxseats
Before
insert or update or delete on BOOKING
for each row
Declare
v_totalseats number (10);
v_count Number;
BEGIN
select count(*) into v_count from BOOKING where FLIGHTID=:new.FLIGHTID;
select TotalNoOfSeats into v_totalseats from FLIGHT where FLIGHID=:new.FLIGHTID;
IF
v_count > v_totalseats
then
Raise_application_ERROR(-203, 'overbooked');
END IF;
END;
我继续得到错误
Error at line 14: PLS-00103: Encountered the symbol ""
答案 0 :(得分:1)
我尝试编译时遇到了同样的错误,但没有什么可看的。我之前遇到过这种情况,通常不知何故,一个不可打印的角色进入了他的代码并且无法看到。如果您有一个可能有助于识别它的十六进制编辑器。找到这些可能非常困难;因为它很短,你可以尝试重写它。但是,还有其他一些问题。
行级触发器无法从导致其触发的表中进行选择。这样做导致" ORA-04091:表正在变异,触发/功能可能看不到它"这是一个设计问题。至少在我看来,规则需要在应用程序层而不是数据库触发器中强制执行。
另一个问题是Raise_Application_Error中使用的错误代码。有效值必须在-20000到-20999范围内。