TRIGGER和COUNT限制计数值

时间:2012-11-18 08:49:19

标签: sql oracle triggers

我想创建一个

的触发器
  • 选择staffid where dateread =此月份日期
  • 计算staffID的数量
  • 如果当月工作人员的人数超过5
  • 将发出停止。

这就是我所做的让我搞砸的事情

我想知道这在逻辑上是否正确? 这是我的编译器日志错误

这是我要求的结果: 仪表读卡器在任何给定的日历月内最多只能读取5米

我的阅读表有 STAFFID是
MeterID
DateRead
ReadinID(PK)

以下是错误文字:

Error(5,7): PL/SQL: SQL Statement ignored Error(5,27): 
PL/SQL:ORA-00923: FROM keyword not found where expected 
C:\Users\ChrisPin\AppData\Roaming\SQL Developer\assgn2 sat4.sql Error(5,7): 
PL/SQL: SQL Statement ignored Error(5,27): 
PL/SQL: ORA-00923: FROM keyword not found where expected

这是触发器代码:

CREATE OR REPLACE TRIGGER LIMIT_5_REDINGS
      BEFORE UPDATE OR INSERT ON reading
    FOR EACH ROW
    DECLARE
    ReadingCount  INTEGER;      --# of depts for this employee
      max_read   INTEGER := 5; --max number of depts per employee.
      BEGIN
      select Reading COUNT(*) into ReadingCount
      from (select *
            from Reading
            where to_char(DateRead, 'YYYY-MM') = to_char(sysdate, 'YYYY-MM'))  
      WHERE STAFFID = :NEW.STAFFID;

    IF :OLD.STAFFID = :NEW.STAFFID THEN
        RETURN;
     ELSE
       IF ReadingCount >= max_read THEN
         RAISE_APPLICATION_ERROR (-20000,'Employees are limited to a max of two departments.');
    END IF;
    END IF;
    END;

1 个答案:

答案 0 :(得分:2)

就在这一行

select Reading COUNT(*) into ReadingCount 

应该是

select COUNT(*) into ReadingCount