2014-03-14 109 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

相關問題