2014-03-14 67 views
0

我现在正在处理postgresql中的触发器,并且在尝试将新插入行的值与现有行中的值进行比较时遇到问题,其中两行匹配某个属性。例如:select postgresql中特定单元格的值

我有值(类标识码,CLASS_NAME,enrollment_limit)表类 和另一个表Enrolled_in与

基本上我试图设置一个触发当学生在上课注册值(student_id数据,类标识码)已经达到了入学限额。这是我的比较代码的样子。

IF ((SELECT count(student_id) as num FROM class, enrolled_in 
     where new.class_id = enrolled_in.class_id) 
     > (select enroll_lmt from class 
     where class_id = new.class_id)) 
     THEN RAISE EXCEPTION 'too many enrolled'; 

我觉得我的代码大于号后是错误的,但我不确定。我一直试图找出这个好几个小时。任何帮助将不胜感激。 谢谢!

回答

0

对于触发BEFORE INSERT

IF (SELECT count(*) >= 
      (SELECT enroll_lmt 
      FROM class c 
      WHERE c.class_id = NEW.class_id) 
    FROM enrolled_in e 
    WHERE e.class_id = NEW.class_id 
    ) THEN 
    RAISE EXCEPTION 'too many enrolled'; 
END IF; 

错误是不必要的交叉连接的位置:FROM class, enrolled_in。你不需要该类的查询。

+0

谢谢!对迟到的答复抱歉! – user3418847

相关问题