Database 创建语句级触发器时发生编译错误

Database 创建语句级触发器时发生编译错误,database,database-trigger,Database,Database Trigger,我尝试使用语句级触发器,而不是行级触发器 我一辈子都想不出如何让这个触发器在没有编译错误的情况下工作。有什么特别明显的我做错了吗?我已经测试了select语句以查找计数,它运行良好 CREATE OR REPLACE TRIGGER bustaxi AFTER INSERT ON BUS DECLARE var_count NUMBER; BEGIN var_count := (SELECT COUNT(L#) FROM (SELECT L# FROM BUS INTERSECT

我尝试使用语句级触发器,而不是行级触发器

我一辈子都想不出如何让这个触发器在没有编译错误的情况下工作。有什么特别明显的我做错了吗?我已经测试了select语句以查找计数,它运行良好

CREATE OR REPLACE TRIGGER bustaxi
AFTER INSERT ON BUS
DECLARE 
var_count NUMBER;
BEGIN

  var_count := (SELECT COUNT(L#)
  FROM (SELECT L# FROM BUS
  INTERSECT
  SELECT L# FROM TAXI));

  IF (var_count > 0) THEN
    RAISE_APPLICATION_ERROR(-29500, 'Already drives a taxi!');
  END IF;
END;
/

我设法使它工作起来。select语句是单独工作的,但像这样使用时,我需要使用“INTO”语句。此外,RAISE_应用程序_错误的数字超出范围。需要介于-20000和-20999之间

CREATE OR REPLACE TRIGGER bustaxi
AFTER INSERT ON BUS
DECLARE 
var_count NUMBER;
BEGIN

  SELECT COUNT(L#) INTO var_count
  FROM (SELECT L# FROM BUS
  INTERSECT
  SELECT L# FROM TAXI);

  IF (var_count > 0) THEN
    RAISE_APPLICATION_ERROR(-20001, 'Already drives a taxi!');
  END IF;
END;
/